Ios Json错误EXC_BAD_指令(代码=EXC_I386_INVOP,子代码=0x0)
亲爱的 我正在使用这个代码Ios Json错误EXC_BAD_指令(代码=EXC_I386_INVOP,子代码=0x0),ios,url,app-transport-security,Ios,Url,App Transport Security,亲爱的 我正在使用这个代码 var Locations = [LocationListStats]() func downloadJSON(completed: @escaping () -> ()) { let url = URL(string: "http://teslm.net/app/LocationList.php") URLSession.shared.dataTask(with: url!) { (data, response, error) in
var Locations = [LocationListStats]()
func downloadJSON(completed: @escaping () -> ()) {
let url = URL(string: "http://teslm.net/app/LocationList.php")
URLSession.shared.dataTask(with: url!) { (data, response, error) in
do {
self.Locations = try JSONDecoder().decode([LocationListStats].self, from: data!)
DispatchQueue.main.async {
completed()
}
}catch {
print("JSON Error")
}
}.resume()
}
但我得到了这个错误:EXC_BAD_指令代码=EXC_I386_INVOP,子代码=0x0
但是,如果我使用其他URL,它将不会出现任何错误。
所以你们认为我在这里的代码有问题吗,或者我应该对后端的Json文件做些什么
此行中出现错误:
self.Locations = try JSONDecoder().decode([LocationListStats].self, from: data!)
如果我打印错误,它会告诉我:
无法加载资源,因为应用程序传输安全策略要求使用安全连接
我在plist文件中使用了这一点,试图解决这个问题,但事情是一样的:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>http://teslm.net/app/LocationList.php</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
</dict>
</dict>
</dict>
我认为这个问题与HTTPS协议有关,对吗?您的异常不正确。NSExceptionDomain应仅为域。您还需要添加一个异常以允许不安全的连接
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>teslm.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
</dict>
</dict>
</dict>
请注意,苹果已经声明,在将来的某个时候,您必须为为什么需要这些例外提供理由。如果您拥有teslm.net服务器,您应该让它支持安全连接,包括ATS的所有要求 可能的副本。除了您显然没有搜索错误消息之外,您的代码还存在一些问题。执行URL请求时,应始终检查错误变量是否为零,并安全地展开数据。将完成处理程序调用分派到主线程是不必要的,也没有任何意义。最后,在catch块中,你应该打印出实际的错误。我按你说的做了,请检查我的编辑伙计们,我向上帝发誓,我到处搜索这个问题,我找不到任何答案herehttp://teslm.net/app/LocationList.php 不是域名。