【发布时间】:2017-10-13 14:14:34
【问题描述】:
我最近在我的网络服务器上实现了 HTTPS,但现在发现我的应用程序无法运行。它似乎没有收到任何 POST 变量,但没有显示错误。
这基本上就是我使用 URLSession 的方式:
var request = URLRequest(url: URL(string: "https://url")!)
request.httpMethod = "POST"
let task = URLSession.shared.dataTask(with: request) {
data, response, error in
// Convert from JSON to NSArray
do {
let result = try JSONSerialization.jsonObject(with: data! as Data, options: .allowFragments) as! NSDictionary
// do something
} catch {
return
}
}
task.resume()
显然,在设置 POST 消息时还有一些额外的东西,但这并不是很重要。在我更改为 HTTPS 之前一切正常。
如何修改我的代码以使其再次运行?
【问题讨论】:
-
这可能是因为 ATS,请确保您的服务器具有最新的 HTTPS(具有完美前向保密的 TLS 1.2)
-
一切都是最新的,你确定在 http 上使用 https 没有问题吗?
-
我真的需要帮助,我明天必须提交这个,它已经停止工作了
-
闭包中有
error对象吗?编辑您的问题,向我们展示它是什么。如果不是error,那么我认为jsonObject调用失败。好吧,然后编辑您的问题,向我们展示data包含的内容(例如,String(data: data!, encoding: .utf8))。 -
代码完全没问题。错误对象为零,JSONSerialization 工作得很好。在我的 PHP 代码中,我试图返回 SQL 查询以进行调试,但查询中没有变量。我知道问题一定出在 HTTP 和 HTTPS 之间的转换上。在那之前一切都很好。
标签: ios swift post https nsurlsession