NSURLConnectionが401の応答ではなくエラーを返す

Radu Vlad

特定のリクエストに対して、すべてが正常に行われた場合はステータスコード200を返し、ユーザーが認証トークンに基づいてログインしていない場合は401を返すWebAPIがあります。応答ステータスが200の場合はすべて正常に機能しますが、応答ステータスが401の場合は正しく機能しないようで、応答がnilのときにコード-1012の接続エラーが返されます。

したがって、次のコード:

[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    NSLog(@"%@", response);
    NSLog(@"%@", connectionError);

    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
    int statusCode = (int)[httpResponse statusCode];
    NSLog(@"response status code: %d", statusCode);

が表示されます

2015-04-01 15:58:18.511 MyProject[3618:694604] <NSHTTPURLResponse: 0x155facc0> { URL: *SOME_URL* } { status code: 200, headers {
    "Access-Control-Allow-Headers" = "Content-Type, Accept, X-Requested-With";
    "Access-Control-Allow-Methods" = "POST, GET, PUT, UPDATE, OPTIONS";
    "Access-Control-Allow-Origin" = "*";
    Connection = "keep-alive";
    "Content-Type" = "application/json";
    Date = "Wed, 01 Apr 2015 12:58:14 GMT";
    Server = "Wildfly 8";
    "Transfer-Encoding" = Identity;
    "X-Powered-By" = "Undertow 1";
} }
2015-04-01 15:58:18.513 MyProject[3618:694604] (null)
2015-04-01 15:58:18.513 MyProject[3618:694604] response status code: 200

応答ステータスが200の場合、ステータスコードが401の場合、次のようになります。

2015-04-01 16:05:55.988 MyProject[3633:695836] (null)
2015-04-01 16:05:55.992 MyProject[3633:695836] Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed. (NSURLErrorDomain error -1012.)" UserInfo=0x146137c0 {NSErrorFailingURLKey=*SOME_URL*, NSErrorFailingURLStringKey=*SOME_URL*, NSUnderlyingError=0x1459e6d0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1012.)"}
2015-04-01 16:05:55.992 MyProject[3633:695836] response status code: 0

PostmanまたはAndroidデバイスを使用して同じリクエストを実行すると、次のヘッダー(Postmanからコピー)を含むステータスコード401が表示されます。

Connection → keep-alive
Content-Length → 30
Content-Type → application/json
Date → Wed, 01 Apr 2015 13:07:34 GMT
Server → Wildfly 8
X-Powered-By → Undertow 1

正確な応答ステータスを提供できる修正またはライブラリはありますか?-1012エラーについて少し検索しましたが、多くを見つけることができなかったので、それを基にしたくありません。

編集:少し調べた後、Applのドキュメントで次のステートメントを見つけました:「リクエストをダウンロードするために認証が必要な場合、必要な資格情報をURLの一部として指定する必要があります。認証が失敗した場合、または資格情報が欠落している場合は、接続は資格情報なしで続行しようとします。

しかし、このエラーが401ステータスの後に発生するかどうかをどのように知ることができますか?別の種類のリクエストの後に表示できますか?

Oberdan Nunes

401のステータスコードを取得するためには、私はあなたがプロトコルを実装する必要があると思うNSURLConnectionDelegate当時とconnection:didReceiveAuthenticationChallenge:

したがって、おそらくを使用して、デリゲートも渡す必要があります[NSURLConnection connectionWithRequest:request delegate:self]

また、認証チャレンジを実装しようとしない場合は、常に200のステータスコードを返しますが、jsonの内容は異なります。

それが役立つことを願っています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Yiiでは、HTML / XMLではなくJSONでHTTPエラー応答を返すことができますか?

分類Dev

BloggerAPIは常に401エラー応答を返します

分類Dev

SpingブートRestfulwsでBeanにマップされた通常のjson応答ではなく、CustomExceptionの場合にエラーJSON応答を返す

分類Dev

IExceptionHandlerの実装がエラー応答を返さないのはなぜですか?

分類Dev

SurveyMonkey APIの取得リクエストで403エラー応答が返されるのはなぜですか?

分類Dev

Guzzle 6POSTリクエストが401の不正な応答を返す

分類Dev

標準出力が応答ではなくエラーログに記録されるのはなぜですか?

分類Dev

HTTP応答ではなく、クラスベースのビューでJSON応答を返すにはどうすればよいですか?

分類Dev

NGINX-408の応答コードではなく500を返す方法は?

分類Dev

grpcからnil以外の応答とエラーが返されるのはなぜですか

分類Dev

AJAXリクエストが応答テキストを返すのではなくPHPファイルを開くのはなぜですか?

分類Dev

Axiosのインスタンスがキャッチエラーで応答を返さないのはなぜですか?

分類Dev

Objective C-SOAPリクエストは、適切な応答ではなく、応答でWSDLを返します

分類Dev

@GetMappingメソッドが応答の送信中に要求パラメータを返すのはなぜですか?

分類Dev

サーバーの応答を変換できず、エラーが発生するのはなぜですか?

分類Dev

NodeJSが応答の送信後にエラーを返す

分類Dev

IISが空の応答を返すのはなぜですか?

分類Dev

codeigniterのヘッダーにトークンフィールドがない場合は常にJSONエラー応答を返したいだけです

分類Dev

応答413の場合にブラウザがCORSエラーを表示するのはなぜですか?

分類Dev

エラーjava.io.IOExceptionの取得:サーバーがHTTP応答コードを返しました:401

分類Dev

Springが200ステータスではなく401を返す

分類Dev

401エラー応答を変更できますか?

分類Dev

応答が200の場合でも、エラーを解析するのはなぜですか?

分類Dev

Goのエラー処理がHTTP応答で空のエラーオブジェクトを返す

分類Dev

ASP.Net / ASP.NET Core Web APIの不正な要求は、401ではなく302リダイレクト応答を返します

分類Dev

バックボーンで401の不正な応答を処理する方法は?

分類Dev

私のコードが予想される200ではなくhttp0応答を返すのはなぜですか?

分類Dev

SpringBoot-JacksonEntityNotFoundExceptionは500応答ではなく200応答を返します

分類Dev

cURLが正しい応答を返すのに、scrapyが応答しないのはなぜですか?

Related 関連記事

  1. 1

    Yiiでは、HTML / XMLではなくJSONでHTTPエラー応答を返すことができますか?

  2. 2

    BloggerAPIは常に401エラー応答を返します

  3. 3

    SpingブートRestfulwsでBeanにマップされた通常のjson応答ではなく、CustomExceptionの場合にエラーJSON応答を返す

  4. 4

    IExceptionHandlerの実装がエラー応答を返さないのはなぜですか?

  5. 5

    SurveyMonkey APIの取得リクエストで403エラー応答が返されるのはなぜですか?

  6. 6

    Guzzle 6POSTリクエストが401の不正な応答を返す

  7. 7

    標準出力が応答ではなくエラーログに記録されるのはなぜですか?

  8. 8

    HTTP応答ではなく、クラスベースのビューでJSON応答を返すにはどうすればよいですか?

  9. 9

    NGINX-408の応答コードではなく500を返す方法は?

  10. 10

    grpcからnil以外の応答とエラーが返されるのはなぜですか

  11. 11

    AJAXリクエストが応答テキストを返すのではなくPHPファイルを開くのはなぜですか?

  12. 12

    Axiosのインスタンスがキャッチエラーで応答を返さないのはなぜですか?

  13. 13

    Objective C-SOAPリクエストは、適切な応答ではなく、応答でWSDLを返します

  14. 14

    @GetMappingメソッドが応答の送信中に要求パラメータを返すのはなぜですか?

  15. 15

    サーバーの応答を変換できず、エラーが発生するのはなぜですか?

  16. 16

    NodeJSが応答の送信後にエラーを返す

  17. 17

    IISが空の応答を返すのはなぜですか?

  18. 18

    codeigniterのヘッダーにトークンフィールドがない場合は常にJSONエラー応答を返したいだけです

  19. 19

    応答413の場合にブラウザがCORSエラーを表示するのはなぜですか?

  20. 20

    エラーjava.io.IOExceptionの取得:サーバーがHTTP応答コードを返しました:401

  21. 21

    Springが200ステータスではなく401を返す

  22. 22

    401エラー応答を変更できますか?

  23. 23

    応答が200の場合でも、エラーを解析するのはなぜですか?

  24. 24

    Goのエラー処理がHTTP応答で空のエラーオブジェクトを返す

  25. 25

    ASP.Net / ASP.NET Core Web APIの不正な要求は、401ではなく302リダイレクト応答を返します

  26. 26

    バックボーンで401の不正な応答を処理する方法は?

  27. 27

    私のコードが予想される200ではなくhttp0応答を返すのはなぜですか?

  28. 28

    SpringBoot-JacksonEntityNotFoundExceptionは500応答ではなく200応答を返します

  29. 29

    cURLが正しい応答を返すのに、scrapyが応答しないのはなぜですか?

ホットタグ

アーカイブ