【问题标题】:Webservice Parsing using Afnetworking stopped working使用 Afnetworking 的 Web 服务解析停止工作
【发布时间】:2017-12-10 07:31:59
【问题描述】:

********************** 更新 ********** ************

经过初步分析,我发现带有 https 的网站无法在 iPhone、iPad 或 iPod 中打开,如果我尝试仅使用 http 从应用程序访问该网站,我就可以加载 JSON。

似乎问题在于 HTTPS,我能够从 HTTP URL 获取数据

简单

HTTPS://www.xzzx.xzzx.com/app/zxzx/zx.php/zx_xz
----> 没有反应

HTTP://www.xzzx.xzzx.com/app/zxzx/zx.php/zx_xz,
----> 有效的 JSON

我交叉检查了 api,因为我的请求正在后端发送并生成有效的 JSON

我通过在 api 文件中添加一个邮件函数来完成这一切应用中收到的任何类型的错误或无效内容。

********************** 原始问题 ********* *************

我们的网站已迁移到新服务器。现在以前的工作网络服务在 iOS 中无法正常工作,但在 POSTMAN 中工作正常。以下是我的实现

 NSURL *url = [NSURL URLWithString:urlWithAction];
NSDictionary *headers = @{ @"content-type": @"application/x-www-form-urlencoded",
                           @"cache-control": @"no-cache",
                           @"web-token": @"eb7524958-aghf-31fd8-00e4-e887df00035c"};

NSString *parmetersToPost=[NSString stringWithFormat:@"%@%@",postDataStr,appCommonParamters ];
NSMutableData *postData = [[NSMutableData alloc] initWithData:[parmetersToPost   dataUsingEncoding:NSUTF8StringEncoding]];

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:3000.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
[[manager dataTaskWithRequest:request completionHandler:responseBlock] resume];

我收到以下错误

2017-07-06 15:20:45.538 DE[4013:1659696] 错误 Domain=NSURLErrorDomain Code=-1017 "无法解析响应" UserInfo={NSErrorFailingURLStringKey=https://www.xzzx.xzzx.com/app/zxzx/zx.php/zx_xz, _kCFStreamErrorCodeKey=-1, NSErrorFailingURLKey=https://www.xzzx.xzzx.com/app/zxzx/zx.php/zx_xz, NSLocalizedDescription=无法解析响应, _kCFStreamErrorDomainKey=4, NSUnderlyingError=0x19266180 {错误域=kCFErrorDomainCFNetwork 代码=-1017 "(null)" UserInfo={_kCFStreamErrorDomainKey=4, NSErrorPeerAddressKey={length = 16, capacity = 16, bytes = 0x100201bb4834d0520000000000000000},_kCFStreamErrorCodeKey=-1}}}

如果我尝试检查邮递员响应显示的 web 服务响应,我该如何解决这个问题。

在 Postman 中,有代码部分可以发出 web 请求。我尝试使用 postmen 代码,但没有运气,仍然遇到同样的错误。

【问题讨论】:

    标签: ios http https afnetworking nsurlsession


    【解决方案1】:

    问题已解决,因为问题是由于多种因素造成的,所有 从服务器端而不是像以前的网站那样从应用程序端 托管在 HTTP 1.1 上,但新服务器使用 HTTP 2.0 和 HTTP/2 Apache 未正确配置。为 HTTP/2 重新配置 子域上的 Apache 和有效的 Ssl 解决了这个问题

    【讨论】:

      【解决方案2】:

      您是否尝试在项目 info.plist 文件中为 https 添加 ATS 标志。可能是您的服务器没有安装 SSL/TLS 证书。

      <dict>
          <key>NSAllowsArbitraryLoads</key>
          <true/>
      </dict>
      

      【讨论】:

      • 据我所知,当设置 TURE 是加载 HTTP 请求时 ATS 标志,顺便说一句,它已经添加并设置为 TRUE,因为我正在加载一些 HTTP 请求
      • 那么这可能是来自服务器的响应 json 的问题。Postman 没有像移动平台那样的限制。我建议使用 tcpdump 分析您的请求响应。 developer.apple.com/library/content/qa/qa1176/_index.html#//…
      • 由于我的应用程序中的自签名证书,我遇到了一些问题。它与设置安全策略一起工作以允许任何类型的证书。 AFSecurityPolicy *sec=[[AFSecurityPolicy alloc] init]; [秒 setAllowInvalidCertificates:YES]; requestOperation.securityPolicy=sec;
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多