1

JSON Web サービスを使用する iPhone アプリを作成しています。その Web サービスから JSON データをロードするために使用される NSURLRequest および NSURLConnection オブジェクトがあります。


    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] 
                                    initWithURL:url 
                                    cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                    timeoutInterval:30];
    [request setHTTPMethod: @"POST"];
    //[request setHTTPShouldHandleCookies:YES];

//create connection
NSURLConnection *connection = [[NSURLConnection alloc] 
                               initWithRequest:request delegate:self];
[connection start];

「admin.mydomain.com/param1/value1/param2/value2」という URL を使用して上記のコードを初めて実行したところ、応答が正しく返されました (JSON 文字列: {"Wrong API Key"})。

次に、URL をステージング サーバー「admin.stg.mydomain.com/param1/value1/param2/value2」に変更しました。このサーバーは、まったく異なる出力を提供します (ブラウザーでその新しい URL を試すと、正しい出力が表示され、最初の URL が提供するものとはまったく異なる json オブジェクトが表示されます)、私の iPhone アプリではまだ正確な結果が得られます。他のサーバーから得たのと同じ応答。存在しない URL を試してみると、正しいエラー メッセージが表示されます。

元のサーバーからの結果をキャッシュしたようで、stg サブドメインに同じ値を返し、2 つの URL に何らかの形で一致します (これは可能ですか?) が、見つかったすべてのキャッシュ データをクリアしました。ビルドとビルド ディレクトリをクリーンアップしようとしましたが、xcode、コンピューター、およびすべてを再起動しました。キャッシュ ポリシーはキャッシュを無視するように設定されています (コードを参照)。重要: シミュレータだけでなく、実際の iPhone でも同じ動作が得られます。

何がこの種の動作を引き起こす可能性があるのか​​ 誰にも分かりませんか? 明らかなことを忘れていますか?

私はこれを何時間も続けて見てきました。どんな助けも大歓迎です!

4

1 に答える 1

1

リクエスト メソッドを 'GET' に変更したところ、期待どおりの結果が得られました。ブラウザで URL を確認するときは get リクエストが使用され、投稿すると別の応答が返されます。これはたまたま開発サーバーで取得したものとまったく同じです。問題は解決しました。ポスト リクエストを許可するには、バックエンドを調整する必要があります。

于 2012-07-14T07:50:57.220 に答える