3

我正在尝试更新我的应用程序以使用 AFNetworking,但我需要使用的 web 服务将 JSON 作为文本/html 返回,当我尝试使用 AFJSONRequestOperation 时,这会中断:

Expected content type {(
    "text/json",
    "application/json",
    "text/javascript"
)}, got text/html

无论如何在 AFNetworking 中覆盖它,以便我可以接受文本/html?

4

2 回答 2

13

是的,有可能,AFNetworking 支持添加可接受的内容类型。在 AFHTTPClient 子类的 init 方法中执行以下操作:

[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObjects:@"text/html", nil]];

我的应用程序遇到了同样的问题,这使它工作。

于 2012-11-22T18:13:25.787 回答
0

我认为除非您完全了解框架的内部功能,否则您不应该这样做。根据经验,我可以告诉你,如果你把它打得那么糟糕,你可能会破坏很多东西,而且你必须从那一刻起维护自己的独立分支,失去更新到最新版本 AFNetworking 的好处未来,因此,除非您将它们集成到您的分支中,否则获取最新的错误修复和功能。

如果你现在只想让它工作,公平地说,继续尝试它是否有效(我怀疑)。我确信 AFNetworking 的其他部分期望内容类型为“text/html”,并且通过在不应该是的部分中添加另一个部分,您会遇到需要您越来越多地修补的冲突直到最后一刻。

老实说,试着改变你的服务器发送的内容类型,并按照他们应该做的事情去做。

另一种方法是在您的应用程序中设置一个“代理”(例如在手机中本地运行的小型服务器),以检索内容并将其传递给具有正确内容类型的 AFNetworking。尽管如此,这仍然会使事情变得过于复杂,但至少您不会自己修改框架,这是最后要做的事情。

于 2012-11-22T17:37:07.283 回答