从包含无效证书的URL加载JSON

时间:2016-06-23 10:08:51

标签: ios xcode swift

我正在做一个请求来自URL的json来显示数据的应用程序。一切都运行正常,但最近API转向https但证书无效。因此,每当我尝试从URL中加载时,我都会:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

我尝试添加

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

到我的.plist(自从API之前就已经在这里了)

我使用SwiftyJSON,我的代码看起来像这样

override func viewDidLoad() {
    super.viewDidLoad()
    json = JSON(data: getDataFromAPI("https://testaws.my_url.com/test"))
}

func getDataFromAPI(urlToRequest: String) -> NSData {
    return NSData(contentsOfURL: NSURL(string: urlToRequest)!)!
}

我也尝试过使用NSURLConnection,添加了两种连接方法,但它仍然无法正常工作

2 个答案:

答案 0 :(得分:0)

我认为现在是时候使用另一种方法来检索json,就像使用与SwiftyJSON集成的Alamofire库一样。在README中,有一个部分可以让您自定义证书的信任策略(参考:https://github.com/Alamofire/Alamofire#security

答案 1 :(得分:0)

我遇到同样的问题我的解决方案可能会帮助你,请尝试一下

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

以上错误意味着您的SSL证书已过期或您的设备时间未正确设置。

1)检查您的SSL证书已过期天气。

2)检查构建应用程序的设备时间。