0

これは、REST API への GET 要求を実行するコードの一部です。

エラーが発生した場合にメッセージを取り戻す方法がわかりません:

 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    NSURL *URL = [NSURL URLWithString:urlString];
    [request setURL:URL];
    [request setHTTPMethod:@"GET"];

    NSError *err = nil;
    NSHTTPURLResponse *res = nil;
    NSData *retData = [NSURLConnection sendSynchronousRequest:request returningResponse:&res error:&err];
    if (err) // This part is never called.
    {
        NSLog(@"Error: %@", err);
    }
    else
    {
        if (res.statusCode != 200)
        {
//            show the user the status message
            NSLog(@"Error: %@", res); // This part is called

        }
        else
        {

        }
    }

失敗した場合にエラーメッセージを取得したい。しかし、if (err)ブロックが呼び出されることはありません。statuscode は 400 ですが、err はまだ null です。

成功すると、json 応答が返されます。

上記のコードでは、statusCode 400 が返されます

4

4 に答える 4

1

エラー オブジェクトはシステム レベルのエラーが発生した場合にのみ作成されるため、エラー ブロックは呼び出されません。要求が正しく送信され、サーバーが応答を送信するため、これは発生しません。サーバーを制御している場合は、おそらくステータス コード 200 を返すようにし、応答にアプリ レベルのステータス コードを含める必要があります。これにより、入力された資格情報が正しくないことをアプリに伝えることができます。

編集:

使用できるステータスメッセージを取得するには

+ (NSString *)localizedStringForStatusCode:(NSInteger)statusCode

これは NSHTTPURLResponse クラスのクラス メソッドです。

    if (res.statusCode != 200)
    {
//            show the user the status message
        NSLog(@"Error: %@", [NSHTTPURLResponse localizedStringForStatusCode: res.statusCode]); // This part is called

    }
于 2013-05-23T08:38:26.637 に答える