2017-03-03 45 views
0

我试图做一个https请求到我的网站API,我一直在为它工作2天,但没有找到一个解决方案,我所有的需求(这是在iOS 10)。我的https证书未签名(https://api.example.de/v1/something),令牌为'授权'标头。那么我想下载JSON文件并解析它。这里是我的代码:如何使用带有未签名证书Swift 3的标头进行HTTPS GET请求?

func testDownload(token: String){ 

let url = URL(string: "https://api.example.de/v1/blabla") 
     var request = URLRequest(url: url!) 
     request.httpMethod = "GET" 
     request.addValue("Token \(token)", forHTTPHeaderField: "Authorization") 
     let session = URLSession.shared 

     let task = session.dataTask(with: request, completionHandler: { (data, response, error) -> Void in 
      do{ 
       let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String: AnyObject] 
       let parsed_data = json["data"] as? [[String: AnyObject]] ?? [] 
       let firstName = parsed_data[0]["firstName"] as? String 
       print("Firstname for first item is: \(firstName)") 
       self.employeeName.text = firstName 

      } catch let error as NSError{ 
       print("Sorry there is an Error: \(error)") 
      } 
     }) 
     task.resume() 

我得到这个错误,这似乎不相关的:

2017-03-03 10:16:52.636 44 App[1763:34479] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9843) 
fatal error: unexpectedly found nil while unwrapping an Optional value 

BTW,我已经改变了的info.plist像This Screenshot 还测试了这段代码在两个不同的API(一个带有认证的SSL,一个带有正常的HTTP协议)并分析数据。

我在做什么错了?请帮我

回答

0

问题是只有证书,如果HTTPS证书没有签名,那么就没有办法发出HTTP请求。如果是HTTPS,那么证书必须签名。

一旦我们签署了证书,问题就解决了。

相关问题