AFNetworking -1017 错误

Posted

技术标签:

【中文标题】AFNetworking -1017 错误【英文标题】:AFNetworking -1017 error 【发布时间】:2015-10-22 18:19:57 【问题描述】:

我正在开发 ios 应用程序并面临一个奇怪的问题。我正在使用 AFNetworking 框架与服务器通信(HTTPS 通信)。我正在使用“getStudentData”Web 服务 API 从服务器检索学生数据。这是发布请求。它适用于除一个之外的所有用户 ID。当我们有超过 450 名学生的数据时,它会失败。以下是错误详情,

Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response" UserInfo=0x7bf9c7d0 NSErrorFailingURLStringKey=https://www.fdmobileservices.com/mAccountsWeb/services/speedpass/rpc, _kCFStreamErrorCodeKey=-1, NSErrorFailingURLKey=https://www.fdmobileservices.com/mAccountsWeb/services/speedpass/rpc, NSLocalizedDescription=cannot parse response, _kCFStreamErrorDomainKey=4,    NSUnderlyingError=0x7bf9a380 "cannot parse response"

根据错误描述,它告诉“无法解析”,所以我认为这可能是由于服务器返回“nil”或 JSON 格式以外的一些数据。

但我无法追踪它,因为它从应用程序端直接进入下面的方法,

 - (void)connection:(NSURLConnection __unused *)connection
didFailWithError:(NSError *)error

有什么方法可以从应用程序端追踪根本原因?此方法适用于除一个以外的其他用户登录。

我尝试使用 Web 客户端通过相同的用户登录访问此服务,它运行良好并返回 450 名学生的数据。我认为由于某种原因,iOS 网络层拒绝了这一点。我正在努力找出答案。

提前致谢。

【问题讨论】:

尝试使用您的网络客户端执行以下操作:1) 确保 HTTP 状态代码为 2xx 2) 确保 json 响应对 jsonlint.com 有效 是的,我都试过了,但没有运气:( 【参考方案1】:

如您所见here、kCFURLErrorCannotParseResponse = -1017。所以这可能是说参数有问题。

如果您使用的是 AFNetworking 2.0,我建议您使用多个断点深入调试您的响应流。 具体尝试在方法开始时在AFURLResponseSerialization.m 上设置断点:

- (id)responseObjectForResponse:(NSURLResponse *)response
                           data:(NSData *)data
                          error:(NSError *__autoreleasing *)error;

在方法内部,如果以下条件为真,则可能有问题(但您可以进入validateResponse:data:error: 以更好地了解问题所在):

   if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error])

如果上述条件为假,您可以检查生成的responseString

NSString *responseString = [[NSString alloc] initWithData:data encoding:stringEncoding];

如果您需要 json 数据,请检查 responseString 是否不是 nildata 数据是否有效,可能还有 stringEncoding。 还要确保您收到的 contentType 是您所期望的。

【讨论】:

是的,我尝试调试“responseObjectForResponse:”方法,但它没有进入该方法,而是转到“didfailwithError:” ....

以上是关于AFNetworking -1017 错误的主要内容,如果未能解决你的问题,请参考以下文章

AFN3.0封装

AFN2.0到3.0的迁移

AFNetworking 同步调用(like/unlike)

iOS开发之AFN的基本使用

AFNetWorking 网络请求转载

iOS AFNetworking 3.0以上使用