【问题标题】:Alamofire Returns Formatting Instead of JSON DataAlamofire 返回格式而不是 JSON 数据
【发布时间】:2017-07-11 17:04:59
【问题描述】:

我正在为我的应用程序开发课程的期末项目开发一个应用程序,该应用程序从 Bungie 的 Destiny 游戏中查找一个人的 Xbox 帐户的统计信息。 Bungie 的命运 API 是一堆 GET 和 POST 端点。目前,我正在尝试使用分类的 API 密钥访问此 GET 端点:“http://www.bungie.net/Platform/Destiny/Stats/ActivityHistory/1/4611686018435748893/2305843009397915105/”。但是,当我拉下该端点时,我会得到一堆 JSON 格式,而不是实际的 JSON。

这是我正在使用的代码:

    override func viewDidLoad()
{
    super.viewDidLoad()
    let headers = ["X-API-Key": //My API Key Here]
    let parameters : Parameters = [:]
    Alamofire.request("http://www.bungie.net/Platform/Destiny/Stats/UniqueWeapons/1/4611686018435748893/2305843009397915105/", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: headers)

        .responseString()
            { response in
                if let JSON = response.result.value
                {
                    print("JSON: \(JSON)")
                }
            }
}

这是返回的示例:

JSON: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Page Restricted</title>
<style>
body{
    font-family:Arial,Helvetica,sans-serif;
    background:url(body_bg.png) repeat-x  #FFFFFF; 
    margin:0;
}
.text3 {
    FONT-SIZE: 14px;
    color:#000000;
    text-decoration:none;
}
.menuTitle {
    FONT-SIZE: 26px;
    color:#bd0000;
    font-weight:bold;
    text-decoration:none;
}
.loginText{
     color:#bd0000; 
     margin-left:220px; 
     text-decoration:none;
}
.loginText:hover{
     text-decoration:underline;
}
</style>
<script type="text/javascript" src="block.js"></script>
</head>
<body onLoad="javascript:displaySections();">
<center>
  <table cellpadding="0" cellspacing="0" width="900">
    <tr>
      <td><img src="top.png" /></td>
    </tr>
    <tr>
      <td height="130" align="left"><table cellpadding="0" cellspacing="0" width="100%" align="left" style="border-right: 1px dashed #999999; border-left: 1px dashed #999999;">
          <tr>
            <td height="40" colspan="3"></td>
           </tr>
          <TR>
                        <TD COLSPAN="100%"><TABLE WIDTH="100%" CELLSPACING="0" CELLPADDING="0" BORDER="0">
                            <TR>
                              <TD WIDTH="3%" height="29"></TD>
                              <TD WIDTH="94%" class="menuTitle" align="center">Page Blocked</TD>
                              <TD WIDTH="3%"></TD>
                            </TR>
                          </TABLE></TD>
                      </TR>
                      <tr>
                        <td colspan="100%">&nbsp;</td>
                       </tr>
          <tr>
<TD width="5%">&nbsp;</TD>
                              <TD width="90%" style="padding:3px;" class="text3">Access to the requested site has been restricted  due to your organization&rsquo;s policy.</TD>
                              <TD width="5%">&nbsp;</TD>
                            </tr>
                            <tr>
                              <TD width="5%" height="40"></TD>
                              <TD width="90%" class="text3" style="padding:3px;"><span id="customText"></span></TD>
                              <TD width="5%"></TD>
                            </tr>
          <tr>
            <td height="50" width="5%">&nbsp;</td>
            <td class="text3" width="90%"><table class="text3" cellpadding="3" cellspacing="0" width="100%" align="left">
                <tr>
                  <td width="90%"><strong>URL/Content: </strong><span id="url"></span></td>
                  <td width="10%"></td>
                </tr>
                <tr>
                  <td width="90%"><strong>Description: </strong><span id="description"></span></td>
                  <td width="10%"></td>
                </tr>
                <tr>
                  <td width="90%"><strong>Group Number: </strong><span id="groupNumber"></span></td>
                  <td width="10%"></td>
                </tr>
                <tr>
                  <td width="90%"><strong>Ip Address: </strong><span id="ipAddress"></span></td>
                  <td width="10%"></td>
                </tr>
              </table></td>
            <td width="5%">&nbsp;</td>
          </tr>
          <tr>
            <td align="center" height="250" colspan="100%"><img src="alert.png" /></td>
          </tr>
        </table></td>
    </tr>
    <tr>
      <td><table width="100%" cellspacing="0" cellpadding="0" style="border-right: 1px dashed #999999; border-left: 1px dashed #999999;">
          <tr>
            <td width="100%" align="center"><span id="loginDifferentUser"></span></td>
          </tr>
          <tr>
            <td height="15" colspan="100%"></td>
          </tr>
        </table></td>
    </tr>
    <FORM action="" method="POST" >
      <INPUT type="hidden" name="button">
                            <INPUT type="hidden" name="fullUrl">
                            <INPUT type="hidden" name="rem">
                            <INPUT type="hidden" name="contactEmail">
                            <INPUT type="hidden" name="gn">
      <tr>
        <td><table width="100%" cellspacing="0" cellpadding="0" style="border-right: 1px dashed #999999; border-left: 1px dashed #999999;">
            <tr>
              <td colspan="100%" height="10"></td>
            </tr>
            <tr>
              <td width="8%"></td>
              <td class="text3" colspan="13" id="exceptionColor"><strong><span id="exception1"></span></strong></td>
              <td width="22%"></td>
            </tr>
            <tr>
              <td colspan="100%" height="10"></td>
            </tr>
          </table></td>
      </tr>
      <tr>
        <td><table width="100%" cellspacing="0" cellpadding="0" style="border-right: 1px dashed #999999; border-left: 1px dashed #999999;">
      <tr>
        <td width="20%"></td>
        <td class="text3" width="10%"><strong><span id="exception5"></span></strong>&nbsp;</td>
        <td class="text3" width="3%"></td>
        <td width="32%" align="left"><span id="exception6"></span></td>
        <td class="text3" width="5%"></td>
        <td width="27%" valign="bottom"></td>
        <td width="3%">&nbsp;</td>
      </tr>
      <tr>
        <td width="20%"></td>
        <td class="text3" width="10%"><strong><span id="exception2"></span></strong>&nbsp;</td>
        <td class="text3" width="3%"></td>
        <td width="32%" align="left"><span id="exception3"></span></td>
        <td class="text3" width="5%"></td>
        <td width="27%" valign="bottom"><span id="exception4"></span></td>
        <td width="3%">&nbsp;</td>
      </tr>
      <tr>
        <td height="45" colspan="100%"></td>
      </tr>
    </table></td>
      </tr>
    </FORM>
    <tr>
      <td style="background:url(footer.png) repeat-x; height:100px;" align="left"><img src="footer-logo.png" style="margin:15px;" /></td>
    </tr>
  </table>
</center>
</body>
</html>

附:我确实导入了 Alamofire。我相信该错误与我将数据称为 .responseString() 有关。但是,当我将其称为 .responseJSON() 时,它会返回:

2017-07-11 12:02:20.671937-0500 DCR[96883:6910175] [] nw_socket_write_close shutdown(9, SHUT_WR): [57] Socket is not connected
2017-07-11 12:02:20.673995-0500 DCR[96883:6910175] [] nw_endpoint_flow_service_writes [1.1 104.20.29.30:80 ready socket-flow (satisfied)] Write request has 0 frame count, 0 byte count
2017-07-11 12:02:20.693119-0500 DCR[96883:6910180] [] tcp_connection_write_eof_block_invoke Write close callback received error: [89] Operation canceled

【问题讨论】:

    标签: json swift alamofire


    【解决方案1】:

    如果您打开返回的 HTML,您会看到以下内容:

    看起来请求被某种网络内容过滤器/防火墙阻止了。这很可能与 Bungie 的 API 无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 2011-05-18
      • 2011-06-11
      • 1970-01-01
      • 2022-01-21
      相关资源
      最近更新 更多