NSURLConnection
を使用してサーバーに接続するアプリケーションを作成しています。
デリゲートメソッドdidreceiveresponse
で、ステータスコードが404の場合、接続をキャンセルし、サーバーで生成されたカスタムエラーを含むメッセージを表示したいと思います。
問題は、応答オブジェクトから、ステータスコード、ヘッダー、MIMEタイプなどしか取得できず、本文は取得できないことです。
NSURLResponse
から本文メッセージを取得するにはどうすればよいですか?
接続をキャンセルするのはなぜですか?結局、404もコンテンツ本文を持つことができます。キャンセルしないで、次のデリゲートNSURLConnectionメソッドをプログラムに呼び出させてください。データ[コンテンツ本体]が送信されると、- (void)connection:(NSURLConnection *) didReceiveData:(NSData *)
が呼び出され、そこでデータを取得する必要があります。 ドキュメントの対応する部分を読む :
サーバーからリクエストへの応答は、コンテンツを説明するメタデータとURLコンテンツデータの2つの部分として表示できます。 ほとんどのプロトコルに共通するメタデータはNSURLResponseクラスによってカプセル化され、MIMEタイプ、予想されるコンテンツの長さ、テキストエンコーディング(該当する場合)、および応答を提供したURLで構成されます。
NSURLConnectionクラスとNSURLDownloadクラスは、NSURLRequestオブジェクトで指定された接続を作成し、コンテンツをダウンロードするためのインターフェイスを提供します。要求データを直接ディスクに書き込みます。両方のクラスは、リダイレクト、認証チャレンジ、およびエラー状態に対応するための広範なデリゲートサポートを提供します。
デリゲートの実装例については:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData{
NSLog(@"String sent from server %@",[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding]);
}