如何使用带有未签名证书Swift 3的标头发出HTTPS GET请求?

时间:2017-03-03 09:40:19

标签: json http-headers ios10 http-request

我正在尝试向我的网站api发出https请求,我一直在努力工作2天,但没有找到满足我所有需求的解决方案(在iOS 10中)。我的https证书是未签名的(https://api.example.de/v1/something),其标记为“授权”标头。然后我想下载JSON文件并解析它。这是我的代码:

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

顺便说一下,我已经更改了像This Screenshot这样的info.plist 并且还在两个不同的API上测试了这个代码(一个使用经过认证的SSL,另一个使用普通的HTTP协议)并解析数据。

我做错了什么?请帮帮我

1 个答案:

答案 0 :(得分:0)

问题只是证书,如果HTTPS证书未签名,则无法发出HTTP请求。如果是HTTPS,则必须签署证书。

我们签署证书后问题就解决了。