【问题标题】:Swift - Modifying URLSession code to work with HTTPSSwift - 修改 URLSession 代码以使用 HTTPS
【发布时间】: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


【解决方案1】:

我遇到了类似的问题,问题的根本原因是我的 Nginx 代理切断了所有未知的标头。

我通过将身份验证标头重命名为 auth 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    相关资源
    最近更新 更多