sourcetip

NSURL 세션:URL 요청 시간을 늘리는 방법은 무엇입니까?

fileupload 2023. 8. 1. 20:43
반응형

NSURL 세션:URL 요청 시간을 늘리는 방법은 무엇입니까?

iOS 7의 새로운 기능을 사용하고 있습니다.NSURLSessionDataTask다음과 같이 데이터를 검색합니다.

NSURLSession *session = [NSURLSession sharedSession];

NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:
request completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
//
}];

오류를 방지하기 위해 제한 시간 값을 높이려면 어떻게 해야 합니까?"The request timed out"(에)NSURLErrorDomain코드 =-1001)?

NSURL 세션 구성 설명서를 확인했지만 시간 초과 값을 설정하는 방법을 찾지 못했습니다.

도와주셔서 감사드려요!

ObjC

NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfig.timeoutIntervalForRequest = 30.0;
sessionConfig.timeoutIntervalForResource = 60.0;

스위프트

let sessionConfig = URLSessionConfiguration.default
sessionConfig.timeoutIntervalForRequest = 30.0
sessionConfig.timeoutIntervalForResource = 60.0
let session = URLSession(configuration: sessionConfig)

문서에서 말하는 내용

timeoutIntervalForRequest그리고.timeoutIntervalForResource요청 및 리소스에 대한 시간 초과 간격을 지정합니다.

timeoutIntervalForRequest 추가 데이터를 대기할 때 사용할 시간 초과 간격입니다.이 값과 연결된 타이머는 새 데이터가 도착할 때마다 재설정됩니다.요청 타이머가 새 데이터를 수신하지 않고 지정된 간격에 도달하면 시간 초과가 트리거됩니다.

timeoutIntervalForResource 리소스 요청에 소요될 수 있는 최대 시간입니다.이 값은 전체 리소스가 전송될 때까지 기다리는 시간을 제어합니다.리소스 타이머는 요청이 시작될 때 시작되고 요청이 완료되거나 이 시간 초과 간격에 도달할 때까지 카운트됩니다.

NSURL 세션 구성 클래스 참조 기반

스위프트 개발자가 이곳에 올 경우.

이를 위해, 당신은 사용할 필요가 있습니다.

    let urlconfig = NSURLSessionConfiguration.defaultSessionConfiguration()
    urlconfig.timeoutIntervalForRequest = 12
    urlconfig.timeoutIntervalForResource = 12
    self.session = NSURLSession(configuration: urlconfig, delegate: self.delegates, delegateQueue: nil)

스위프트 3. 타임아웃 15초.

    let configuration = URLSessionConfiguration.default
    configuration.timeoutIntervalForRequest = TimeInterval(15)
    configuration.timeoutIntervalForResource = TimeInterval(15)
    let session = URLSession(configuration: configuration)

저의 경우는 잘못된 수업의 시간 제한을 늘리고 있었습니다.URL 세션이 아닌 URLRequest의 시간 초과를 증가시켜 시간 초과 오류가 해결되었습니다.

var request = URLRequest(url: url)
request.timeoutInterval = 30

NSURLSessionConfiguration에 속성 시간 초과가 포함되어 있습니다.요청 간격:

@property NSTimeInterval timeoutIntervalForRequest

시간 초과 간격을 제어합니다.시간 초과도 있습니다.요청이 시작된 후의 시간 초과에 대한 IntervalForResource입니다.

SWIFT 3.0에서는 다음을 사용해야 합니다.

 if let cleanURLString = urlString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed),
    let theURL: Foundation.URL = Foundation.URL(string: cleanURLString) {

    var task:URLSessionDataTask?
    let urlconfig = URLSessionConfiguration.default
    urlconfig.timeoutIntervalForRequest = 20
    urlconfig.timeoutIntervalForResource = 60
    let session = Foundation.URLSession(configuration: urlconfig, delegate: self, delegateQueue: OperationQueue.main)

    let request = URLRequest(url: theURL)
    request.httpMethod = "POST"
    request.cachePolicy = URLRequest.CachePolicy.reloadIgnoringCacheData
    request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
    let paramString = YourParameterString
    request.httpBody = paramString.data(using: String.Encoding.utf8)

    task = session.dataTask(with: request) {
        (data, response, error) in
        // Do here
    })
    dataTask.resume()
}

Swift 4의 경우:

let config = URLSessionConfiguration.default
config.timeoutIntervalForRequest = TimeInterval(15)
config.timeoutIntervalForResource = TimeInterval(15)
let urlSession = URLSession(configuration: config)

시간 초과IntervalForRequest는 이 구성을 기반으로 하는 세션 내의 모든 작업에 대한 것입니다.시간 초과IntervalForResource는 이 구성을 기반으로 하는 세션 내의 모든 작업에 대한 것입니다.

언급URL : https://stackoverflow.com/questions/23428793/nsurlsession-how-to-increase-time-out-for-url-requests

반응형