我们使用 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]);
}];
答案 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。)
您说,“服务器不需要用户身份验证”。但如果确实如此,则不会调用此错误。
可能的原因:
HTTPS_URL
和SOME_PATH
形成的网址不符合您的预期,而某些其他服务器正在请求授权一些调试提示:
curl
或Advanced Rest Client发出相同请求,并观察服务器的响应旁注:我认为[NSString stringWithFormat:SOME_PATH]
毫无意义 - 为什么不使用SOME_PATH
?