【问题标题】:AFNetworking request with Basic Auth works at first but fails after a few minutes带有基本身份验证的 AFNetworking 请求最初有效,但几分钟后失败
【发布时间】:2014-02-26 19:33:24
【问题描述】:

我有一个应用程序,其数据来自具有基本身份验证的 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)而挂起并出现错误:

Error: Error Domain=NSURLErrorDomain Code=-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] 获取'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 Code=-1012 "操作无法完成。(NSURLErrorDomain 错误 -1012.)" 用户信息 = 0x17d9a990 {NSErrorFailingURLKey=https://myurl.com/getdata, NSErrorFailingURLStringKey=https://myurl.com/getdata},状态码:0

似乎 URL 被发送为 (null)...

【问题讨论】:

    标签: ios afnetworking


    【解决方案1】:

    事实证明,尽管根据http://support.apple.com/kb/HT5012,我使用的 GoDaddy 证书看起来是有效的并且受 iOS 7 支持,但添加此位可以解决问题。似乎有点违背了目的,但它确实有效。我不会接受这个答案,以防有人可以提供一些见解/更有帮助。

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

    【讨论】:

      猜你喜欢
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 2014-04-06
      相关资源
      最近更新 更多