AFNetworking请求在非常糟糕的网络状况下过早发生超时

时间:2015-03-19 11:02:23

标签: ios timeout afnetworking afnetworking-2 nsmutableurlrequest

我正在使用AFNetworking 2.5,一切都很好,直到我遇到一个非常糟糕的网络问题。我的要求是随机超时:

Error Domain=NSURLErrorDomain Code=-1001
_kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=60

所以,当我发送图像时,我想通过使用:

来增加超时延迟
aRequestSerializer.timeoutInterval = 600; // 10 minutes

不幸的是,请求在各种延迟后超时:30秒,2分钟,3分半钟,6分钟......但它永远不会在10分钟停止。

有什么想法吗? 提前谢谢。

这是我的代码:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

manager.requestSerializer = [AFHTTPRequestSerializer serializer];
[self setupAuthTokenForRequestSerializer:manager.requestSerializer];
[self setupAuthHeaderForRequestSerializer:manager.requestSerializer];
[self setupTimeoutForRequestSerializer:manager.requestSerializer];

return [manager POST:aUrl 
          parameters:nil 
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
             [formData appendPartWithFileData:aImageData
                                         name:@"file"
                                     fileName:@"file.jpg"
                                     mimeType:@"image/jpeg"];
         }
             success:successBlock 
             failure:failureBlock];

编辑:问题也出现在iOS 7和8上,在真实设备和模拟器上......

编辑2 :看起来生成的操作请求的timeoutInterval只有60 ...(它仍然无法解释为什么会出现这种随机超时)

编辑3 :似乎AFHTTPRequestSerializer的KVO更新NSMutableURLRequest timeoutInterval不起作用...

1 个答案:

答案 0 :(得分:0)

这似乎与这段代码有关:https://github.com/AFNetworking/AFNetworking/commit/0f3829f6afdfa57eced1e80c317e68ca5e5f85d0#comments

删除后,请求会持续更长时间......甚至超过10分钟,也许是因为cpu时间,而不是实时......我不知道。无论如何,它似乎已经解决了......