使用Basic Auth的AFNetworking请求最初工作但几分钟后失败

时间:2014-02-26 19:33:25

标签: ios afnetworking

我有一个应用程序,其数据来自具有基本身份验证的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)...

1 个答案:

答案 0 :(得分:3)

事实证明,即使我使用的GoDaddy证书看起来有效并且根据http://support.apple.com/kb/HT5012支持iOS 7,但添加此位可以解决问题。似乎有点失败的目的,但它的工作原理。我不会接受这个答案,万一有人可以提供一些见解/更有帮助的东西。

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
securityPolicy.allowInvalidCertificates = YES;
manager.securityPolicy = securityPolicy;