2017-10-10 29 views
0

我试图让下面的网址URLSession或Alamofire.Request不能在URL中使用破折号?

https://cactus.nci.nih.gov/chemical/structure/530-62-1/smiles

这个请求应该只返回一个纯文本的请求:在这样的操场

Clc1ccc(C=O)cc1 

使用代码工作完全正常:

var cas = "530-62-1" 
let url = URL(string: "https://cactus.nci.nih.gov/chemical/structure/\(cas)/smiles") 
var result = "" 

let task = URLSession.shared.dataTask(with: url!) {(data, response, error) in 

    //print(response!) 
    result = String(data: data!, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))! 
    print(result) 
} 

task.resume() 

但是,如果我尝试使用我的macOS项目中的代码(使用Swift 4和Xcode 9)tar歌厅的MacOS 10.13我得到

URL for request is: https://cactus.nci.nih.gov/chemical/structure/104-88-1/smiles 2017-10-10 17:23:08.475739+0100 AimieSmiles[18012:3495056] dnssd_clientstub ConnectToServer: connect() failed path:/var/run/mDNSResponder Socket:11 Err:-1 Errno:1 Operation not permitted 2017-10-10 17:23:08.476341+0100 AimieSmiles[18012:3495056] [] nw_resolver_create_dns_service_locked DNSServiceCreateDelegateConnection failed: ServiceNotRunning(-65563) 2017-10-10 17:23:08.476719+0100 AimieSmiles[18012:3495056] TIC TCP Conn Failed [1:0x60c000162dc0]: 10:-72000 Err(-65563)

如果我尝试使用Alamofire(我只是想检查作为一种可能性,使用类似这样的代码:

func alamoRequest(cas: String) -> String { 

     var smilesResult = "" 
     var stringURL = "https://cactus.nci.nih.gov/chemical/structure/\(cas)/smiles" 
     var url = URL(string: stringURL)! 
     Alamofire.request(url).responseString { response in 
      print("Request: \(String(describing: response.request))") // original url request 
      print("Response: \(String(describing: response.response))") // http url response 
      print("Result: \(response.result)")       // response serialization result 
      print("Error: \(String(describing: response.error))") 



      if let result = response.result.value { 
       smilesResult = result 
       print("Result: \(result)") // serialized json response 
      } else if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) { 
       smilesResult = utf8Text 
       print("Data: \(utf8Text)") // original server data as UTF8 string 
      } 
     } 

     return smilesResult 
    } 

我收到以下错误:

Request: Optional(https://cactus.nci.nih.gov/chemical/structure/514-10-3/smiles) Response: nil Result: FAILURE Error: Optional(Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be found." UserInfo={NSUnderlyingError=0x60c000450800 {Error Domain=kCFErrorDomainCFNetwork Code=-1003 "(null)" UserInfo={_kCFStreamErrorCodeKey=-72000, _kCFStreamErrorDomainKey=10}}, NSErrorFailingURLStringKey= https://cactus.nci.nih.gov/chemical/structure/514-10-3/smiles , NSErrorFailingURLKey= https://cactus.nci.nih.gov/chemical/structure/514-10-3/smiles , _kCFStreamErrorDomainKey=10, _kCFStreamErrorCodeKey=-72000, NSLocalizedDescription=A server with the specified hostname could not be found.})

它看起来错误的URL是无效的,或从macOS应用程序无法识别?奇怪的是,它从一个游乐场工作正常...

我试图启用应用程序传输安全设置 - >允许任意负载 - >是在plist,但没有什么区别。

回答

0

问题原来是微不足道的:我只需要启用应用沙箱,并检查传入和传出的网络连接。