我正在尝试向我的网站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协议)并解析数据。
我做错了什么?请帮帮我
答案 0 :(得分:0)
问题只是证书,如果HTTPS证书未签名,则无法发出HTTP请求。如果是HTTPS,则必须签署证书。
我们签署证书后问题就解决了。