AFNetworking 2.0 - 意外的NSURLErrorDomain错误-1012

时间:2014-03-11 18:06:20

标签: afnetworking nsurlerrordomain

我们使用 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]);
        }];

2 个答案:

答案 0 :(得分:47)

我认为您已经解决了问题,但如果您尝试在没有有效证书的服务器中进行身份验证,则必须在{{1}中为YES设置allowInvalidCertificates object:

AFHTTPRequestOperationManager

另外,正如@ a1phanumeric所说,可能需要包含这一行:

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

干杯。

答案 1 :(得分:2)

NSURLErrorDomain -1012是NSURLErrorUserCancelledAuthentication。 (参见error code list并搜索-1012。)

您说,“服务器不需要用户身份验证”。但如果确实如此,则不会调用此错误。

可能的原因:

  1. 您的服务器错误地请求授权(服务器错误)
  2. 使用HTTPS_URLSOME_PATH形成的网址不符合您的预期,而某些其他服务器正在请求授权
  3. 某些中间人(如代理服务器或接入点)需要授权。
  4. 一些调试提示:

    • 在AFNetworking实施中设置断点以查看正在点击的网址
    • 配置AFHTTPRequestOperationLogger,以便您可以在控制台日志中看到实际的请求正文和响应
    • curl或Advanced Rest Client发出相同请求,并观察服务器的响应

    旁注:我认为[NSString stringWithFormat:SOME_PATH]毫无意义 - 为什么不使用SOME_PATH