NSURLSession : URL 요청에 대한 시간 초과를 늘리는 방법은 무엇입니까?
NSURLSessionDataTask다음과 같이 데이터를 검색하기 위해 iOS 7의 새로운 기능 을 사용 하고 있습니다.
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:
request completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
//
}];
오류를 피하기 위해 시간 초과 값을 늘리려면 어떻게해야 합니까 "The request timed out"( NSURLErrorDomainCode =에서 -1001)?
NSURLSessionConfiguration 에 대한 설명서를 확인 했지만 시간 초과 값을 설정하는 방법을 찾지 못했습니다.
도와 주셔서 감사합니다!
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-리소스 요청에 허용되어야하는 최대 시간입니다. 이 값은 포기하기 전에 전체 리소스가 전송 될 때까지 기다리는 시간을 제어합니다. 리소스 타이머는 요청이 시작될 때 시작되고 요청이 완료되거나이 시간 초과 간격에 도달 할 때까지 계산됩니다.
NSURLSessionConfiguration 클래스 참조 기반
Swift 개발자가 여기 오는 경우
이렇게하려면 다음을 사용해야합니다.
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)
NSURLSessionConfiguration에는 timeoutIntervalForRequest 속성이 포함됩니다.
@property NSTimeInterval timeoutIntervalForRequest
시간 초과 간격을 제어합니다. 요청이 시작된 후 제한 시간에 대한 timeoutIntervalForResource도 있습니다.
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)
The timeoutIntervalForRequest is for all tasks within sessions based on this configuration. The timeoutIntervalForResource is for all tasks within sessions based on this configuration.
In my case I was increasing the timeout of the wrong class. My timeout error was solved by increasing the timeout of the URLRequest not the URLSession
var request = URLRequest(url: url)
request.timeoutInterval = 30
참고URL : https://stackoverflow.com/questions/23428793/nsurlsession-how-to-increase-time-out-for-url-requests
'Program Club' 카테고리의 다른 글
| git commit 중지됨-트리 빌드 오류 (0) | 2020.12.03 |
|---|---|
| 파이썬에서 암호 학적으로 안전한 난수를 어떻게 만들 수 있습니까? (0) | 2020.12.03 |
| AngularJS 지시문에서 자식 요소 찾기 (0) | 2020.12.03 |
| Ubuntu를 사용하여 Docker 컨테이너 내에 pip 패키지를 설치할 수 없습니다. (0) | 2020.12.03 |
| 문자열 인덱스가있는 Python 배열 (0) | 2020.12.03 |