Rails 3.x アプリケーションによって提供される Web サービスを使用する iOS アプリを作成しています。GET
具体的には、このブロックで単純な要求に応答するコントローラーからの JSON 応答を受信しようとしています。
# after some data calls...
respond_to do |format|
format.json { render :json => some_object }
format.xml { render :xml => some_object }
end
私の iOS アプリケーションでは、AFNetworking
ライブラリを使用して のサブクラスを作成し、AFHTTPClient
このサービスを利用しています。GET エンドポイントを呼び出すと、HTTP 406 エラーが発生します。ローカルで実行されている Rails アプリに対してこれを実行すると、それが送信されていることを確認できます。それはすべてのデータ呼び出しを正常に実行します。respond_to
ブロックに到達すると死ぬように見えます。問題は送信しているリクエストヘッダーにあると確信していAFNetworking
ます。
私のHTTPクライアントがヘッダーに設定しているものは次のとおりです。
[self setDefaultHeader:@"Accept" value:@"application/json"];
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
私のエンドポイントはこれです...
http://localhost:3000/api/some_object.json
ブラウザでこのエンドポイントを呼び出すと、問題なくレンダリングされます。iOS アプリでそれを呼び出すと、406 が返されます。Rails アプリにブレークポイントをスローし、通過するヘッダーを調べると、(URL が示すように)AFNetworking
に設定request.format
されているように見えますが、設定されmobile
ているようです。私のブラウザからは、そうあるべきです。format
.json
request.format
application/json
URL のリクエストで、このオプションをクエリ文字列パラメーターとして手動で設定しようとしましformat
たが、困惑しています。何も機能しません。足りないものはありますか?AFNetworking
これを機能させるためにリクエストヘッダーとして使用するように指示する必要がありますか? 私は途方に暮れています。