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
是否不是 nil
和 data
数据是否有效,可能还有 stringEncoding
。
还要确保您收到的 contentType 是您所期望的。
【讨论】:
是的,我尝试调试“responseObjectForResponse:”方法,但它没有进入该方法,而是转到“didfailwithError:” ....以上是关于AFNetworking -1017 错误的主要内容,如果未能解决你的问题,请参考以下文章