Я могу так или иначе сделать синхронный Запрос HTTP через NSURLSession
в Swift?
Я могу сделать асинхронный запрос с помощью следующего кода:
if let url = NSURL(string: "https://2ch.hk/b/threads.json") {
let task = NSURLSession.sharedSession().dataTaskWithURL(url) {
(data, response, error) in
var jsonError: NSError?
let jsonDict = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &jsonError) as [String: AnyObject]
if jsonError != nil {
return
}
// ...
}
task.resume()
}
Но что относительно синхронного запроса?
Заранее спасибо.
Дублированный ответ от https://<час> stackoverflow.com/a/58392835/246776
, Если основанный на семафоре подход не работает на Вас, попытайтесь опросить базирующийся подход.
var reply = Data()
/// We need to make a session object.
/// This is key to make this work. This won't work with shared session.
let conf = URLSessionConfiguration.ephemeral
let sess = URLSession(configuration: conf)
let task = sess.dataTask(with: u) { data, _, _ in
reply = data ?? Data()
}
task.resume()
while task.state != .completed {
Thread.sleep(forTimeInterval: 0.1)
}
FileHandle.standardOutput.write(reply)