我有一个应用程序,其数据来自具有基本身份验证的AFNetworking请求。我有一个刷新按钮来执行用于初始输入数据的相同功能。这一切都有效,但几分钟后却没有。
我的代码:
- (void) refreshData
{
// Show loading
NSLog(@"Refreshing...");
[LoadingView initInView:self.view];
// Get session data for auth key
SessionHelper *session = [SessionHelper sharedInstance];
// Setup request
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setRequestSerializer:[AFHTTPRequestSerializer serializer]];
[manager.requestSerializer clearAuthorizationHeader];
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:session.authKey password:@""];
NSString *url = @"https://myurl.com/getdata";
[manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
self.data = [[NSMutableArray alloc] init];
[self.data addObjectsFromArray:responseObject];
[self.tableView reloadData];
[LoadingView remove];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", [error description]);
[operation cancel];
}];
}
首先反复运行,但几分钟后它会挂起加载屏幕(来自LoadingView)并出现错误:
错误:错误域= NSURLErrorDomain代码= -1012“操作 无法完成。 (NSURLErrorDomain错误-1012。)“ UserInfo = 0x8a5ed20 {NSErrorFailingURLKey = https://myurl.com/getdata, NSErrorFailingURLStringKey = https://myurl.com/getdata}
我想也许我需要做clearAuthorizationHeader或其他什么,但是没有去。有任何想法吗?谢谢!
更新:在错误消息中记录operation.response.statusCode 给了我0.
更新2:使用AFNetworkActivityLogger在开始失败后给我这个:
2014-02-26 13:23:02.206 MyApp iPad [4087:60b] GET'https://myurl.com/getdata'2014-02-26 13:23:02.646 MyApp iPad [4087:60b] [错误] GET'(null)'(0)[0.4332 s]:错误 Domain = NSURLErrorDomain Code = -1012“操作不能 完成。 (NSURLErrorDomain错误-1012。)“UserInfo = 0x17d9a990 {NSErrorFailingURLKey = https://myurl.com/getdata, NSErrorFailingURLStringKey = https://myurl.com/getdata} 2014-02-26 13:23:02.648 MyApp iPad [4087:60b]错误:错误域= NSURLErrorDomain 代码= -1012“操作无法完成。(NSURLErrorDomain 错误-1012。)“UserInfo = 0x17d9a990 {NSErrorFailingURLKey = https://myurl.com/getdata, NSErrorFailingURLStringKey = https://myurl.com/getdata},状态代码:0
似乎URL被发送为(null)...
答案 0 :(得分:3)
事实证明,即使我使用的GoDaddy证书看起来有效并且根据http://support.apple.com/kb/HT5012支持iOS 7,但添加此位可以解决问题。似乎有点失败的目的,但它的工作原理。我不会接受这个答案,万一有人可以提供一些见解/更有帮助的东西。
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
securityPolicy.allowInvalidCertificates = YES;
manager.securityPolicy = securityPolicy;