【发布时间】:2017-08-24 15:09:00
【问题描述】:
我的代码如下:
var components = URLComponents()
components.queryItems = args.map {
URLQueryItem(name: $0, value: $1)
}
let paramToSend = components.query!
let url = URL(string: "https://my-test-server.com")
let session = URLSession.shared
let request = NSMutableURLRequest(url: url!)
request.httpMethod = "POST"
request.httpBody = paramToSend.data(using: String.Encoding.utf8)
let task = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) in
guard let _:Data = data else{ return }
let json:Any?
do{
json = try JSONSerialization.jsonObject(with: data!, options: [])
} catch{
return
}
guard let server_response = json as? NSDictionary else { return }
print(server_response)
guard let data_block = server_response["data"] as? NSDictionary else { return }
guard let session_data = data_block["session"] as? String else { return }
let preferences = UserDefaults.standard
preferences.set(session_data, forKey: "session")
// DispatchQueue.main.async (
// // execute:self.LoginDone
// )
})
task.resume()
测试服务器有ssl证书,我已经通过拖动到模拟器进行了验证。但仍然是同样的错误。
我在firefox中测试了这个调用,它工作正常。
我还更新了Allow Arbitrary Loads: YES 的 info.plist
请指导我出了什么问题。
谢谢
【问题讨论】:
-
一些一般性建议:使用安全的可选解包,并且不要使用具有原生 Swift 等效项的 Foundation 数据类型(例如
NSDictionary)
标签: swift3