NSURLSessionTask 上傳圖片 請求超時

注意用如下 request.timeoutInterval = 20.f; 設置請求超時時間是沒有用的,實際返回的超時時間仍然是10秒。如果上傳圖片的超時10秒, 同時併發上傳很多張圖片,容易導致部分請求超時,比如同時併發上傳50張圖片,差不多有20張是返回請求超時的 。

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:URLString]];
    NSString *boundary = [LCNetPort generateBoundaryString];
    NSData * myData = [LCAppUtil createBodyWithBoundary:boundary parameters:@{} paths:@[filePath] fieldName:filedName];
    [request setHTTPMethod:@"POST"];
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
    [request setValue:contentType forHTTPHeaderField: @"Content-Type"];
    request.timeoutInterval = 20.f;
    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionTask *task = [session uploadTaskWithRequest:request fromData:myData completionHandler:completionHandler];
    [task resume];

如果需要真正設置 NSURLSessionTask 的請求超時的時間,需要如下代碼設置。

  NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
    config.timeoutIntervalForRequest = 20;
    config.timeoutIntervalForResource = 60 * 10;
    NSURLSession *session = [NSURLSession sessionWithConfiguration:config];

需要重新書寫初始化 NSURLSession 的代碼,將 NSURLSessionConfigurationtimeoutIntervalForRequest 設置成自己喜歡的超時時間,比如這裏設置成20秒,那麼就是請求發起後等待20秒才返回請求超時的錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章