iOS模拟器不向运行tomcat webservice的localhost mac发送http请求

时间:2017-02-25 10:13:27

标签: ios swift swift3

  

重要信息,我在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

上运行tomcat的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

我想我的代码有问题。

4 个答案:

答案 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的打印结果?

相关问题