URLSession“找不到主机名”,但我在浏览器

时间:2017-11-22 00:55:09

标签: swift xcode macos https urlsession

我有这段代码:

let primaryCurr = "https://api.independentreserve.com/Public/GetValidPrimaryCurrencyCodes"

guard let url = URL(string: primaryCurr) else { 
    print("Invalid URL: \(primaryCurr)")
    return nil 
}

let task = URLSession.shared.dataTask(with: url) { data, response, error in
    guard error == nil else {
        print(error!)
        return
    }
    guard let data = data else {
        print("Data is empty")
        return
    }

    let json = try! JSONSerialization.jsonObject(with: data, options: [])
        print("JSON: ", json)
    }

    task.resume()
}

消息区域得到:

  

2017-11-21 22:41:58.919318 + 1000 AltcoinTrader [36412:12415444]   dnssd_clientstub ConnectToServer:connect() - >没有尝试:1   2017-11-21 22:41:59.921886 + 1000 AltcoinTrader [36412:12415444]   dnssd_clientstub ConnectToServer:connect() - >没有尝试:2   2017-11-21 22:42:00.922257 + 1000 AltcoinTrader [36412:12415444]   dnssd_clientstub ConnectToServer:connect() - >没有尝试:3   2017-11-21 22:42:01.927400 + 1000 AltcoinTrader [36412:12415444]   dnssd_clientstub ConnectToServer:connect()失败   path:/ var / run / mDNSResponder Socket:11 Err:-1 Errno:1操作不是   允许2017-11-21 22:42:01.927796 + 1000   AltcoinTrader [36412:12415444] [] nw_resolver_create_dns_service_locked   DNSServiceCreateDelegateConnection失败:ServiceNotRunning(-65563)   2017-11-21 22:42:01.928105 + 1000 AltcoinTrader [36412:12415444] TIC TCP   Conn失败[1:0x608000162580]:10:-72000 Err(-65563)2017-11-21   22:42:01.929003 + 1000 AltcoinTrader [36412:12415423]任务   < 209F1681-53BB-4E9D-A553-E349AE087159>。&LT 1为卤素; HTTP加载失败(错误   代码:-1003 [10:-72000])2017-11-21 22:42:01.929234 + 1000   AltcoinTrader [36412:12415423]任务   < 209F1681-53BB-4E9D-A553-E349AE087159>。&LT 1为卤素;完成错误 - 代码:   -1003错误域= NSURLErrorDomain代码= -1003“找不到具有指定主机名的服务器。”   UserInfo = {NSUnderlyingError = 0x604000046720 {错误   Domain = kCFErrorDomainCFNetwork Code = -1003“(null)”   的UserInfo = {_ kCFStreamErrorCodeKey = -72000,   _kCFStreamErrorDomainKey = 10}},NSErrorFailingURLStringKey = https://api.independentreserve.com/Public/GetValidPrimaryCurrencyCodes/,   NSErrorFailingURLKey = https://api.independentreserve.com/Public/GetValidPrimaryCurrencyCodes/,   _kCFStreamErrorDomainKey = 10,_kCFStreamErrorCodeKey = -72000,NSLocalizedDescription =具有指定主机名的服务器无法   找到。}

-1003代码可能更相关。尝试String时我得到了它(contentsOf:url) 我知道URL是有效的,因为我可以将其粘贴到浏览器中并获取正确的JSON字符串。 我在这做错了什么?我正在使用最新的macOS 10.13.1在Xcode 9.1中创建我的第一个mac应用程序。

此致

标记

1 个答案:

答案 0 :(得分:5)

我通过更改沙盒中的权限来修复此问题。

具体来说,在Project导航器中我选择了项目,然后在主窗口中选择了应用程序,然后选择了Capabilities选项卡。 App Sandbox已打开,但所有项目均未选中。我打开了网络(传入和传出)。

然后它起作用了

我通过谷歌搜索到达此页并最终看到此页面: https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW9