35

iOS で、Web サーバーからの応答の http ステータス コード (404,500 200 など) を受け取るにはどうすればよいですか。私はそれがNSUrlConnectionDelegateにあると仮定しています。

Objective-C またはMonotouch .NET の回答は OK です。

4

4 に答える 4

88

はい、デリゲートメソッド-didRecieveResponseでステータスコードを取得できます。

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
   NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
   int code = [httpResponse statusCode];
}
于 2011-08-02T21:24:48.197 に答える
11
NSHTTPURLResponse* urlResponse = nil;
NSError *error = nil;
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];

aSynchronousリクエストには、NSHTTPURLResponseを取得する方法も必要です。

次のようなステータスコードが表示されます。

int statusCode = [urlResponse statusCode];
int errorCode = error.code;

よく使用されるエラーコード(404など)の場合、エラーが発生しますが、コードが異なります(401は-1012になります)。

于 2011-08-02T21:24:58.010 に答える
3

これらの C# ユーザーのために、MonoTouch for .NET でそれを行う方法を次に示します。これはNSUrlConnectionDelegateにあります。

public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response)
{
  if (response is NSHttpUrlResponse)
  {
    var r = response as NSHttpUrlResponse;
    Console.WriteLine (r.StatusCode);
   }
}
于 2011-08-02T22:17:20.027 に答える
1

この他のスタックオーバーフローの質問を見ると、- (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse *)responseデリゲート メソッドで http ステータス コードを処理できるようです。

- (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse*)response 
{
    if ([response isKindOfClass: [NSHTTPURLResponse class]])
        statusCode = [(NSHTTPURLResponse*) response statusCode];
}
于 2011-08-02T21:27:44.807 に答える