如何在 swift 尝试捕获 html 代码时设置超时?



我也在尝试使用以下代码从特定 URL 获取 html 代码:

guard let myURL = URL(string: myURLString) else {
print("Error: (myURLString) doesn't seem to be a valid URL")
return myLinksArray
}
do {
myHTMLString = try String(contentsOf: myURL, encoding: .ascii)
print("HTML : (myHTMLString)")
} catch let error {
print("Error: (error)")
}

但这样我就无法设置超时。有些网站需要太多时间才能得到回应。 解决问题的最佳方法是什么?

提前致谢

您是否考虑过创建URLSession dataTask,我相信这将是一个更好的方法。您可以创建自定义URLSessionConfiguration,并根据需要使用它来指定超时间隔请求或超时间隔资源,如下所示:

guard let myURL = URL(string: myURLString) else {
print("Error: (myURLString) doesn't seem to be a valid URL")
fatalError()
}
let sessionConfig = URLSessionConfiguration.default
sessionConfig.timeoutIntervalForRequest = 15 // seconds
sessionConfig.timeoutIntervalForResource = 15 // seconds

let dataTask = URLSession(configuration: sessionConfig).dataTask(with: myURL) { (data, urlResponse, error) in
guard let data = data else { return }
let myHTMLString = String(data: data, encoding: .ascii)
print("HTML : (myHTMLString ?? "")")
}
dataTask.resume() // start the request

最新更新