游贤明 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;
    }

原文链接:https://yq.aliyun.com/articles/29633

发表评论

邮箱地址不会被公开。 必填项已用*标注