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
'sourcetip' 카테고리의 다른 글
시스템.인수예외:테이블 형식 매개 변수에는 올바른 형식 이름이 있어야 합니다. (0) | 2023.08.01 |
---|---|
여러 목록에 포함된 모든 값의 결합을 만드는 Pythonic 방법 (0) | 2023.08.01 |
탭 표시줄 항목 텍스트 제거, 이미지만 표시 (0) | 2023.08.01 |
Android 앱이 릴리스 인증서로 서명되었는지 확인하려면 어떻게 해야 합니까? (0) | 2023.08.01 |
데이터 테이블: 정의되지 않은 속성 스타일을 읽을 수 없습니다. (0) | 2023.08.01 |