重要信息,我在TestCase下运行所有这些。
我的网址为If Not Intersect(Target, Range("H7:H18")) Is Nothing Then Target.Offset(, 3).ClearContents
如果我将此网址粘贴在同一http://my-MacBook-Pro.local:8080/myapi/v2/Driver/getDriver?domain=123&driver=125&key=9808098
上运行的Safari
上。它以JSON响应。我注意到我的catalina.out报告了这个请求。
我在iPhone Simulator
上启用了Allow HTTP Services
。
这是代码段
Settings->Developer
修改
Reference
将以下内容添加到print("fullurl ->"+urlComponents.url!.absoluteString)
URLSession.shared.dataTask(with: urlComponents.url!, completionHandler: {
(data, response, error) in
if(error != nil){
print("error")
}else{
do{
let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String : AnyObject]
print (json)
}catch let error as NSError{
print(error)
}
}
}).resume()
,我的http请求仍未通过info.plist
localhost
mac
port 8080
修改
在<dict>
<key>NSExceptionDomains</key>
<dict>
<key>My-MacBook-Pro.local</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
中尝试使用这些设置。没有影响。做了info.plist
但没有影响。
Clean
我想我的代码有问题。
答案 0 :(得分:3)
您需要在info.plist文件中设置相应的标记,方法与要求跟踪用户位置或访问照片库和相机的方式相同。默认情况下,Apple阻止请求不安全的网络电话,即http。
您可以查找如何设置个别例外或将NSAllowsArbitraryLoads
设置为true以允许ALL
不安全的电话。当然,这被认为是更容易但不太安全的选择。
答案 1 :(得分:2)
将它放在你的AppDelegate中:
setenv("CFNETWORK_DIAGNOSTICS", "3", 1);
如此处所述https://developer.apple.com/library/content/qa/qa1887/_index.html
这应该注销“网络日志文件位于文件:x”之类的内容,您可以在文件中为您的URL grep,并检查是否有任何未在您的应用中显示的已记录错误。这是调试ATS或其他网络连接问题的一种非常好的方法,因为它非常详细。
答案 2 :(得分:1)
在测试用例下运行网络调用,需要XCTestExpectation
的框架。
测试用例不等待async
completionHandlers
被调用。不幸的是XCTestExpectation
框架不是设计友好的。我们应该能够集成测试用例而无需改变我们的类结构。
让我们在Apple Forum
上跟踪对此的回复答案 3 :(得分:-1)
可能需要urlencode。
你能否展示urlComponents.url的打印结果?