我已经更新了我的 xcode,但 https 请求有问题。我需要获取 html 代码。但有些网站很好,有些则为零。我认为 plist 文件有问题,但日志中的先前版本说的是 Clear Http 和不安全的加载。当前的 xcode - 没有。为什么我在某些网站上遇到问题? Yandex.ru - 我可以获得 html 内容。 Google.com - 我不能(转到 catch block )。这个问题与不同的网站有关。其中一部分我能得到,第二部分我不能。感谢您解决了我的问题。
这是我的代码:
if let url = URL(string: "http://google.com") {
do {
let contents = try String(contentsOf: url)
print(contents)
} catch {
print("catch")
}
} else {
print("else")
}
附件中的我的 plist 文件:
最佳答案
您应该尝试打印抛出的错误,而不是使用 print("catch")
进行捕获
catch (let e) {
print(e)
}
我看到的错误是 Error Domain=NSCocoaErrorDomain Code=261 “无法使用文本编码 Unicode (UTF-8) 打开该文件。” UserInfo={NSURL=http://google.com, NSStringEncoding=4}
我试过了
let contents = try String(contentsOf: url, encoding: String.Encoding.utf8)
但这似乎并不能解决问题。取决于 Google 如何提供其网页
最重要
这是一个阻塞调用 - 您应该使用异步方法来加载远程 URL。此方法实际上用于从 Bundle 中加载本地资源。请查看 NSURLRequest
https://developer.apple.com/documentation/foundation/nsurlrequest和 NSURLSession https://developer.apple.com/documentation/foundation/nsurlsession
关于swift - 我的 http 请求不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47140599/