AFNetworking AFHTTPClient 成功和失败的不同内容类型

Posted

技术标签:

【中文标题】AFNetworking AFHTTPClient 成功和失败的不同内容类型【英文标题】:AFNetworking AFHTTPClient Different content types for success and Fail 【发布时间】:2012-08-24 14:00:27 【问题描述】:

我正在尝试通过 AFHTTPClient 子类访问具有复杂性的 Web 服务

如果请求成功,则内容以 JSON 格式返回。如果由于某种原因失败,来自服务器的错误将以 XML 格式返回。

目前,我认为我可以处理的唯一方法是不尝试使用特定的 XML/JSON RequestOperations,纯粹将所有内容视为纯 HTTP 请求,然后尝试自己手动解析它,具体取决于根据响应的样子。

遗憾的是,我无法控制 Web 服务,否则我会确保它是 all JSON。

有没有人有更好的建议来处理这个问题?

[编辑]

我想一种让它更简洁的方法是创建一个新的 AFHTTPRequestOperation 子类,它在内部处理内容类型的检测,然后根据从服务器返回的内容传回解析的 JSON 或 GDataXML 对象.

谢谢

【问题讨论】:

这类似于我使用过的几个 Web 服务,JSON 表示成功,纯文本表示失败。您可以做的最好的事情是在不同的内容类型上向 JSON 抛出错误,或者尝试解析特定错误的响应。 【参考方案1】:

这可能不是最干净或最佳的解决方案,但您可以使用现有的 JSON 库检查响应实际上是有效的 JSON。如果是,照常进行;如果不是,请使用您的手工解析解决方案进行处理。

【讨论】:

谢谢。我考虑过这种方法,但不喜欢尝试解析它只是为了获得“失败”返回的开销想法。我猜如果它检测到非 JSON,解析可能会提前结束,所以应该不会太低效。

以上是关于AFNetworking AFHTTPClient 成功和失败的不同内容类型的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking AFHTTPClient 类

AFNetworking AFHTTPClient 成功和失败的不同内容类型

使用 AFNetworking(AFHTTPClient 子类)将 JSON 发送到服务器 => 这是一个异步操作

AFHTTPclient 的编译器警告

带有 XMLParser 的 AFNetworking HTTPClient 子类

如何为不同的请求方法创建具有不同参数编码的 AFHttpClient?