信任你已经发现了,AFNetworking 在POST请求下,特别是设置了HTTPBody属性值的时候,timeoutInterval 设置是无效的。
如果你的APP的tabbar 是需要访问接口动态带出的,如果网速不好的时候,你的产品就会遇到启动时间太久的情况,即使本地有缓存机制,也会由于无法控制接口请求时间而让用户等待太久。
如果你也遇到同样的问题,请翻看如下攻略。
锦囊如下:
GCD + 延时处理 + 撤销网络请求。
CGFloat timeoutInterval = 5.f;//超时时长设置
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeoutInterval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if ( [manager.tasks count]>0) {
[dataTask cancel];//撤销网络请求任务
}
});
完整代码如下:
__block NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
if (error.code == NSURLErrorCancelled) {
// 撤销了请求
} else {
// 其他错误
}
}else{
if (success) {
//成功回调
}
}
}];
CGFloat timeoutInterval = 5.f;//超时时长设置
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeoutInterval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if ( [manager.tasks count]>0) {
[dataTask cancel];//撤销网络请求任务
}
});
[dataTask resume];
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END















暂无评论内容