运行环境为Xcode7.0,iOS9.0,AFNetworking~> 2.5.0,为了用户在网速慢情况下上次照片等待45秒后提示用户上次超时.
与超时时间设置有关的代码为:
// 设置超时时间
[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
manager.requestSerializer.timeoutInterval = 45.f;
[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];
实际运行时,如果我设置超时为5s,实际会在13秒左右报超时错误,设置45s,1分多钟也不见超时.而且AFNetworking默认超时为60s,但在不更改其超时时间的情况下,也是1分多钟才超时甚至一直不超时就在那上传图片.
各位哥哥姐姐,婶婶叔叔求爱护 > <
附上整个网络请求的代码:
我们对AFNetworking进行了二次封装
/**
@param failed 失败block
*/
} method:@"POST"];
}
#pragma mark --- 私有方法
/**
@param method 请求方法(POST,GET)
*/
// 设置超时时间
[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
manager.requestSerializer.timeoutInterval = 45.f;
[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];
manager.requestSerializer.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
//GET请求
NSComparisonResult comparison1 = [method caseInsensitiveCompare:@"GET"];
if (comparison1 == NSOrderedSame) {
operation =[manager GET:urlString
parameters:params
success:^(AFHTTPRequestOperation *operation,id responseObject) {
success(responseObject);
}failure:^(AFHTTPRequestOperation *operation,NSError *error) {
failure(error);
}];
}
//POST请求
NSComparisonResult comparison2 = [method caseInsensitiveCompare:@"POST"];
if (comparison2 == NSOrderedSame) {
BOOL isFile = NO;
for (NSString *key in params.allKeys) {
id value = params[key];
if ([value isKindOfClass:[NSData class]]) {
isFile = YES;
break;
}
}
//不包含文件数据
if(!isFile){
operation = [manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
success(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
failure(error);
}];
}else{
operation = [manager POST:urlString parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
for (NSString *key in params) {
id value = params[key];
if ([value isKindOfClass:[NSData class]]) {
NSString *keySuffix = [NSString stringWithFormat:@"%@.jpg",key];
[formData appendPartWithFileData:value name:key fileName:keySuffix mimeType:@"image/jpeg"];
}
}
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
success(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
failure(error);
}];
}
}
operation.responseSerializer = ({
AFJSONResponseSerializer *ret = [AFJSONResponseSerializer serializer];
ret.removesKeysWithNullValues = YES;
ret;
});
}
顶顶.有人遇到过类似情况,然后解决的嘛?
我现在也遇到这个问题了