3

AFNetworking を使用するようにアプリを更新しようとしていますが、使用する必要がある Web サービスが JSON を text/html として返し、AFJSONRequestOperation を使用しようとすると壊れます。

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

テキスト/htmlを受け入れることができるように、AFNetworkingでこれをオーバーライドする方法はありますか?

4

2 に答える 2

13

はい、可能です。AFNetworking は、許容可能なコンテンツ タイプの追加をサポートしています。AFHTTPClient サブクラスの init メソッドで、次の操作を行います。

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

アプリで同じ問題が発生しましたが、これで機能しました。

于 2012-11-22T18:13:25.787 に答える
0

フレームワークが内部で何をしているのかを完全に理解していない限り、そのように進むべきではないと思います。経験上、パッチを適用した場合、多くの問題が発生する可能性があります。さらに、その時点から独自のブランチを維持する必要があり、最新バージョンのAFNetworkingに更新するメリットが失われます。将来、したがって、ブランチに統合しない限り、最新のバグ修正と機能を入手できます。

今のところそれを機能させたいだけなら、十分に公平に、先に進んでそれが機能するかどうか試してみてください(私は疑っています)。コンテンツタイプが「text/html」であることを期待しているAFNetworkingの他の部分があると確信しています。また、想定されていない部分に別の部分を追加すると、競合が発生し、パッチを追加する必要があります。時の終わりまで。

正直なところ、サーバーが送信するコンテンツタイプを変更して、想定どおりに処理してください。

もう1つのアプローチは、コンテンツを取得して適切なコンテンツタイプでAFNetworkingに渡す「プロキシ」(電話でローカルに実行される小さなサーバーなど)を設定することです。それでも、それは何のためにも物事を複雑にしすぎるでしょうが、少なくともあなたは自分でフレームワークを変更することはないでしょう、それは最後にすべきことです。

于 2012-11-22T17:37:07.283 に答える