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