Я новичок в разработке приложения ios, я пытаюсь подключить https-сервер, у меня возникла проблема. Я не могу подключить самоподписанный certficate, поэтому я искал сеть. В том, что я следил за приведенным кодом, его рабочий штраф , но работает асинхронно mode.so мне нужно до завершения задачи ожидания и вернуть data.Please дал какие-либо идеи?/Как сделать синхронный запрос с помощью NSOperationQueue?
func requestAsynChronousData(request: NSURLRequest)->NSData? {
let data: NSData? = nil
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue:NSOperationQueue.mainQueue())
let task = session.dataTaskWithRequest(request){ (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
if error == nil {
print("RESULTTTT\(data)")
}
}
task.resume()
return data;
}
func URLSession(session: NSURLSession, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void) {
print("WAITING!!!!!!!!!!!!!COMPLETIONHANDLER")
completionHandler(NSURLSessionAuthChallengeDisposition.UseCredential, NSURLCredential(forTrust: challenge.protectionSpace.serverTrust!))
}
Если вы не делаете это на вторичном потоке, вы никогда не должны * выполнять синхронные запросы URL. В основном вы гарантированно получите отказ от магазина приложений, если вы это сделаете, потому что iOS автоматически убивает приложения, которые блокируют основной поток более нескольких секунд, а таймаут HTTP занимает до 90 секунд. Все, что можно сделать синхронно, также можно выполнить асинхронно. Вы просто должны проектировать вокруг него. Например, вместо написания функции, которая возвращает значение, вы можете написать функцию, которая берет блок и передает значение этому блоку, когда запрос завершается. – dgatwood