如何使用 headers 和未签名的证书 Swift 3 发出 HTTPS GET 请求?
How to make a HTTPS GET request with headers with unsigned Certificate Swift 3?
我正在尝试向我的网站 api 发出 https 请求,我已经为此工作了 2 天,但没有找到满足我所有需求的解决方案(它在 iOS 10).我的 https 证书未签名 (https://api.example.de/v1/something),令牌为 'Authorization' header。然后我想下载 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 协议)并解析了数据。
我做错了什么?请帮助我
问题仅出在证书上,如果 HTTPS 证书未签名,则无法发出 HTTP 请求。如果是 HTTPS,则必须签署证书。
我们签署证书后问题就解决了。
我正在尝试向我的网站 api 发出 https 请求,我已经为此工作了 2 天,但没有找到满足我所有需求的解决方案(它在 iOS 10).我的 https 证书未签名 (https://api.example.de/v1/something),令牌为 'Authorization' header。然后我想下载 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 协议)并解析了数据。
我做错了什么?请帮助我
问题仅出在证书上,如果 HTTPS 证书未签名,则无法发出 HTTP 请求。如果是 HTTPS,则必须签署证书。
我们签署证书后问题就解决了。