设置AFNetworking网络请求的超时时间
游贤明 2016-04-15 14:17:23 浏览4112
网络
IOS,
重要,
设置AFNetworking网络请求的超时时间
也许大家使用的时候已经察觉到,设置AFNetworking的超时时间并不管用,但可以用特殊的方式来处理。
以下是笔者基于AFNetworking2.5.0封装的GET,POST请求用方法。
POST请求
-
(AFHTTPRequestOperation )GETMethod:(NSString )URLString
parameters:(id)parameters
success:(void (^)(AFHTTPRequestOperation operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation operation, NSError *error))failure {AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
// 设置超时时间
[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
manager.requestSerializer.timeoutInterval = 10.f;
[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];AFHTTPRequestOperation httpOperation = [manager GET:URLString
parameters:parameters
success:^(AFHTTPRequestOperation operation, id responseObject) {
if (success) {
success(operation, responseObject);
}
}
failure:^(AFHTTPRequestOperation operation, NSError error) {
if (failure) {
failure(operation, error);
}
}];return httpOperation;
}
GET请求
-
(AFHTTPRequestOperation )POSTMethod:(NSString )URLString
parameters:(id)parameters
success:(void (^)(AFHTTPRequestOperation operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation operation, NSError *error))failure {AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];// 设置超时时间
[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
manager.requestSerializer.timeoutInterval = 10.f;
[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];AFHTTPRequestOperation httpOperation = [manager POST:URLString
parameters:parameters
success:^(AFHTTPRequestOperation operation, id responseObject) {
if (success) {
success(operation, responseObject);
}
}
failure:^(AFHTTPRequestOperation operation, NSError error) {
if (failure) {
failure(operation, error);
}
}];return httpOperation;
}