我正在使用Swift构建OS X Today Widget。这应该通过HTTPS调用JSON API并显示结果。到目前为止一切都很好。
但是当我在Widget模拟器中运行小部件时,我总是收到错误"找不到具有指定主机名的服务器"。 URL是正确的,当我在命令行上进行卷曲时它会起作用。似乎Widget模拟器没有执行适当的DNS查找或完全阻止https流量。
我正在使用Alamofire,但我也尝试过使用NSURLSession。结果相同。
let url = NSURL(string: "https://httpbin.org/get")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
debugPrint(error)
}
task.resume()
导致:
Optional(
Error
Domain=NSURLErrorDomain
Code=-1003 "A server with the specified hostname could not be found."
UserInfo={
NSUnderlyingError=0x7fe1f3e341a0
ErrorDomain=kCFErrorDomainCFNetwork
Code=-1003 "(null)"
UserInfo={
_kCFStreamErrorCodeKey=-72000,
_kCFStreamErrorDomainKey=10}
},
NSErrorFailingURLStringKey=https://httpbin.org/get,
NSErrorFailingURLKey=https://httpbin.org/get,
_kCFStreamErrorDomainKey=10,
_kCFStreamErrorCodeKey=-72000,
NSLocalizedDescription=A server with the specified hostname could not be found.
}
)
小部件模拟器应该能够进行外部连接,是吗?
答案 0 :(得分:6)
这是一个非常古老的问题,所以很确定你已经得到了你的答案,但我遇到了我认为同样的问题,我花了很长时间才弄清楚。希望这会帮助其他人更快地解决它。
您可以使用小部件模拟器连接到https。我的版本是版本1.0(552.6)。我得到的错误是:2017-01-07 14:35:26.062370 MYAPP [18387:5719297] dnssd_clientstub ConnectToServer:connect()路径失败:/ var / run / mDNSResponder套接字:5错误:-1错误:1不允许操作
原则上你必须将打开应用程序沙箱并明确允许网络进出。我想我应该阅读文档:https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AddingCapabilities/AddingCapabilities.html#//apple_ref/doc/uid/TP40012582-CH26-SW3
扩展程序有自己的权利,因此请确保配置需要网络的每个目标。