AFNetworking 和网络错误

Posted

技术标签:

【中文标题】AFNetworking 和网络错误【英文标题】:AFNetworking and Network Errors 【发布时间】:2012-07-04 19:02:53 【问题描述】:

我正在使用AFNetworking 框架发出几个 JSON 网络请求。

在开发过程中,如果我未能提供所需的参数或服务开发人员破坏了某些东西 :-) 我会收到 500 error

AFJSONRequestOperation 的错误块正确捕获它。但是我看不到页面正文,因为AfNetworking 在收到头部错误代码后立即取消请求。

是否有一些解决方法。我想将响应正文吐到日志中。

【问题讨论】:

【参考方案1】:

使用传递到失败块的操作中的responseDataresponseString 属性。

【讨论】:

在 AFHTTPRequestOperation 类中找不到这些属性之一 Mattt's 真的应该是这里公认的答案。永远不应将“500”响应视为成功。此外,为了回答您的问题 LeonS,responseData 属性在 AFURLRequestOperation 中声明,AFHTTPRequestOperation 是基于该属性的。 请注意,AFURLRequestOperation 头文件不是随 AFHTTPClient 一起导入的。这意味着您必须在访问操作对象的属性之前导入头文件。 AFHTTPRequestOperation 现在是AFURLConnectionOperation 的子类,因为AFURLRequestOperation 似乎已经过时(不过我还没有查看历史记录)。 responseData 还在。【参考方案2】:

您需要将 http 代码 500 添加到可接受的状态代码中,并在成功回调中对其进行过滤。在那里你会有一个 responseObject。

【讨论】:

这是不可取的——请不要这样做。 AFNetworking 区分了successfailure 回调;如果要记录响应的内容,可以在失败回调中使用响应对象的responseDataresponseString 来获取。

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

AFNetworking 和网络错误

网络连接丢失错误仅在带有 AFNetworking 的 iOS7 上

AFNetworking 2 AFHTTPRequestOperation 失败阻止从错误 userInfo 中剥离键

iOS网络开发之AFNetworking

AFNetworking网络请求的get和post步骤

iOS开发——Reachability和AFNetworking判断网络连接状态