21

AFNetworking 2.0を使用するアプリで次の問題が発生しました。AFHTTPRequestOperationManagerの GET メソッドを使用すると、エラーが発生しましNSURLErrorDomain code -1012た。要求は HTTPS を使用し、サーバーはユーザー認証を必要としません。ちなみに、リクエストはサーバーに到達しませんでした。

いくつかのテストを実行しましたが、エラーが生成されたのはこれが初めてであり、関連性がないように見えるため、このエラーがどのように生成されるのか疑問に思っています.

AFHTTPRequestOperationManager のセットアップ:

httpOperationManager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL: 
        [NSURL URLWithString: HTTPS_URL)]];

httpOperationManager.responseSerializer = 
        [AFXMLParserResponseSerializer serializer];

[[AFNetworkActivityIndicatorManager sharedManager] setEnabled: YES];

リクエストを取得

AFHTTPRequestOperation *op =[httpOperationManager GET: 
        [NSString stringWithFormat:SOME_PATH] 
        parameters:nil 
        success:^(AFHTTPRequestOperation *operation, id responseObject) { 
            //code to setup NSXMLParser ...
        } 
        failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"error %@", [error localizedDescription]);
        }];
4

2 に答える 2

47

すでに問題を解決していると思いますが、有効な証明書を持たないサーバーで認証しようとしている場合は、オブジェクトYESのプロパティに設定する必要があります。allowInvalidCertificatesAFHTTPRequestOperationManager

[yourManager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"your_username" password:@"your_password"];
[yourManager.securityPolicy setAllowInvalidCertificates:YES];

また、@ a1phanumeric が言ったように、次の行を含める必要がある場合があります。

[yourManager.securityPolicy setValidatesDomainName:NO];

乾杯。

于 2014-04-10T23:16:03.850 に答える
2

NSURLErrorDomain -1012 はNSURLErrorUserCancelledAuthentication. (エラー コード リストを参照して、-1012 を検索してください。)

「サーバーはユーザー認証を必要としません」と述べています。ただし、それが true の場合、このエラーは呼び出されません。

考えられる原因:

  1. サーバーが誤って承認を要求している (サーバーのバグ)
  2. HTTPS_URLandで形成された URLSOME_PATHが予期したものではなく、他のサーバーが認証を要求しています
  3. 一部の仲介者 (プロキシ サーバーやアクセス ポイントなど) が承認を必要としています。

デバッグのヒント:

  • AFNetworking 実装内にブレークポイントを設定して、ヒットしている URL を確認する
  • AFHTTPRequestOperationLoggerを構成して、コンソール ログで実際の要求本文と応答を確認できるようにします。
  • または Advanced Rest Clientで同じリクエストを行いcurl、サーバーの応答を観察します。

サイドノート:私[NSString stringWithFormat:SOME_PATH]は無意味だと思います-なぜ単に使用しないのSOME_PATHですか?

于 2014-03-12T01:54:03.993 に答える