1

メソッドを使用する前に数回...

NSURLResponse *response;
NSError *error;

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

NSOperation でデータを同期的に送受信し、それが機能した場合。

現在、新しいプロジェクト (新しい API、新しいサーバー) に取り組んでいますが、エラーが表示されません。

Charles プロキシを使用してネットワーク トラフィックをスヌープしています。Charles で失敗したリクエストから「Response Code 500 Internal Server Error」が返されるのを確認できますが、アプリではエラー オブジェクトは常に nil です。

私が言ったように、私は以前にこのロードを使用したことがあり、エラーが発生した場合は常にエラーが入力されます。

サーバー側の開発者に指摘できるサーバー側の何かがありますか? 彼は私が何か悪いことをしているに違いないと断言しています。私が理解できない唯一のことは、Charles がそこから応答コード 500 を取得していることです。

注: 問題は、エラーが発生していることではありません。問題は、それが発生したときに NSError オブジェクトがそれを報告していないことです。誰かが私にサーバー開発者にエラーを修正するように頼んだ場合に備えて、それを片付けます。:-)

4

2 に答える 2

7

NSURLConnection の観点からはリクエストが成功したため、エラー オブジェクトは読み込まれません。つまり、サーバーにデータを送信して応答を受信できたということです。

プロトコル固有のエラーについては、返された NSURLResponse を検査する必要があります。この場合、応答を NSHTTPURLResponse にキャストし、 を呼び出し-statusCodeます。

于 2013-02-04T18:31:56.050 に答える
2

このエラーは、サーバーからの応答がない場合、または接続の喪失などの有効なHTTP応答がない場合にのみ入力されます。

「応答コード500内部サーバーエラー」は、内部サーバーエラーが発生し、サーバーが応答コード500のHTTPメッセージを返すことを意味します。NSHTTPURLResponse代わりにを使用してメソッドをNSURLResponse呼び出し、HTTP応答コードを確認する必要があります。statusCode応答コードが2で始まる場合は、すべて問題ありません。だから私は通常次のようなチェックをします:statusCode / 100 == 2

その他のHTTP応答コードについては、http://en.wikipedia.org/w/index.php?title=HTTP_response_codesを参照してください。

于 2013-02-04T19:45:06.387 に答える