我的http请求不起作用

时间:2017-11-06 15:41:30

标签: swift

我更新了我的xcode,我遇到了https请求的问题。我需要获取HTML代码。但是有些网站变好了,有些网站没有。我认为plist文件的问题,但日志中的预先版本说明Clear Http和不安全的负载。目前的xcode - 没有。为什么我要抓住一些网站? Yandex.ru - 我可以获得HTML内容。 Google.com - 我不能(去拦截)。不同站点的这个问题。其中一部分我可以得到,第二部分我不能。谢谢你解决我的问题。

有我的代码:

if let url = URL(string: "http://google.com") {
  do {
    let contents = try String(contentsOf: url)
    print(contents)
  } catch {
    print("catch")
  }
} else {
  print("else")
}

我的plist文件附件:

enter image description here

2 个答案:

答案 0 :(得分:0)

不应该使用print("catch"),而应该尝试打印出被抛出的错误

catch (let e) {
    print(e)
}

我看到的错误是Error Domain=NSCocoaErrorDomain Code=261 "The file couldn’t be opened using text encoding 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/nsurlrequestNSURLSession https://developer.apple.com/documentation/foundation/nsurlsession

答案 1 :(得分:0)

我发现问题 - 所有这些网站都不是UTF-8。我尝试不同,这是工作:

var serverString = NSString(data:data!,encoding:String.Encoding.windowsCP1251.rawValue)