Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Json错误EXC_BAD_指令(代码=EXC_I386_INVOP,子代码=0x0)_Ios_Url_App Transport Security - Fatal编程技术网

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 不是域名。