当尝试使用Alamofire从互联网访问API时,任何人都知道如何处理此错误。奇怪的是我已经为其他API使用了相同的功能,它们似乎工作得非常好,但不是这样。
API是:
这是错误:
可选(错误域= NSURLErrorDomain代码= -1022"资源可以 因为App Transport Security策略需要,所以无法加载 使用安全连接。" UserInfo = {NSUnderlyingError = 0x6000004496c0 {错误 Domain = kCFErrorDomainCFNetwork Code = -1022"(null)"}, NSErrorFailingURLStringKey = http://minecraftpocket-servers.com/api/?object=servers&element=voters&key=833gowl7nz7jyqaqx96dagqzamn431yr9h&month=current&format=json&limit=10, NSErrorFailingURLKey = http://minecraftpocket-servers.com/api/?object=servers&element=voters&key=833gowl7nz7jyqaqx96dagqzamn431yr9h&month=current&format=json&limit=10, NSLocalizedDescription =无法加载资源,因为 应用程序传输安全策略要求使用安全 连接。})
这是我试图打电话的功能。
func getAPIData(url: String) {
Alamofire.request(url, method: .get)
.responseJSON { response in
if response.result.isSuccess {
let dataJSON : JSON = JSON(response.result.value!)
self.updateLabels(json: dataJSON)
print("Success!")
} else {
print("Error: Could not get data.")
print("Error: ", response.error)
}
}
}
答案 0 :(得分:1)
这是因为您没有使用安全网站(https),而是使用http。
在 info.plist
中添加此内容 <key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
答案 1 :(得分:0)
正如它所说,应用传输安全策略需要安全连接。
您可以在plist中启用任意加载
将条目Add App Transport Security Settings
添加为字典并添加Bool条目Allow Arbitrary Loads
,设置为true。
但是,如果您可以控制服务器端,我建议使用SSL。使用HTTPS不会触发此错误。