【问题标题】:How to make a HTTPS GET request with headers with unsigned Certificate Swift 3?如何使用带有未签名证书 Swift 3 的标头发出 HTTPS GET 请求?
【发布时间】:2017-03-03 09:40:19
【问题描述】:

我正在尝试向我的网站 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

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

我做错了什么?请帮帮我

【问题讨论】:

    标签: json http-headers ios10 http-request


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-19
      • 2018-03-25
      • 2016-07-06
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多