【问题标题】:GET and POST requests fail when going to my custom server转到我的自定义服务器时,GET 和 POST 请求失败
【发布时间】:2018-07-28 17:43:41
【问题描述】:

我有一个在 BlueHost 上运行的基于 linux 的 node.js 服务器,我已将其配置为响应基本的 GET 和 POST 请求。我已经在 Postman 中对这些请求进行了广泛的测试,它们似乎都运行良好。我认为从应用程序执行这些请求的过渡不会太困难,但我目前无法让其中任何一个工作。

我正在使用基于此存储库的样板代码。例如,这里是我用于获取请求的代码

guard let url = URL(string: "publicIP/test") else { print("Invalid url"); return }

let session = URLSession.shared
session.dataTask(with: url) { (data, response, error) in
    if let res = response {
        print(res)
    }

    if let d = data {
        print(d)
        do {
            let json = try JSONSerialization.jsonObject(with: d, options: [])
            print(json)
        } catch {
            print(error)
            print("ERRORED")
        }
    }
}.resume()

此代码非常适用于 https://jsonplaceholder.typicode.com/users 端点,但是每当我尝试用我的公共 ip 替换它时(就像在 Postman 中一样)并且我不断收到以下错误。

2018-02-18 01:14:35.633518-0800 Application[1248:321560] Task <2E64810D-C10E-4D45-82F5-9C9E37A5FE54>.<1> finished with error - code: -1002

请记住,此信息不会在整个错误参数中传递,因为不会打印“ERRORED”。

【问题讨论】:

    标签: ios swift post get nsurl


    【解决方案1】:

    问题不在于任何示例代码,而只是对 url 字符串应该是什么样子的误解。我认为我需要匹配网页浏览器地址栏中显示的网页网址,但这并不完全正确,因为即使它是 chrome 中地址的一部分,http 也不会显示。

    解决方案只是将http:// 添加到我的网址前面。

    【讨论】:

      【解决方案2】:

      该错误不应与使用 HTTP 而不是 HTTPS 有关。应用传输安全失败返回错误代码 -1022。

      错误代码 -1002 表示 URL 无效。也许您的 HTTP 文件包含结构上无效的 URL(例如缺少方案、http/https 以外的方案等)?

      为了额外的调试,设置这个环境变量

      CFNETWORK_DIAGNOSTICS=1
      

      在您的 Xcode 项目中并重新运行该应用程序。一旦您知道哪个 URL 失败了,问题可能会变得更加明显。

      如果不是,请提交错误。

      您可以在以下链接查看错误代码列表

      Apple Documentation NSURLErrorDomain Error Codes List

      【讨论】:

      • 该 url 是一个像 11.111.111.11 这样的公共 IP 地址,如果放在网络浏览器中,它确实会将您带到来自服务器的消息。有问题吗?
      • 可能是。无法预测苹果会怎么想!!你检查过网址结构吗?在尝试了那个环境变量之后你得到了什么?
      【解决方案3】:

      你能把它添加到你的 info.plist 中

      <key>NSAppTransportSecurity</key>
       <dict>
       <key>NSAllowsArbitraryLoads</key>
       <true/>
      </dict>
      

      【讨论】:

      • 不确定你是否知道一些我不知道的东西,但那些似乎不是 info.plist 的有效设置名称。我目前有“应用程序传输安全设置”字典,其中元素“允许任意加载”设置为“是”
      • 这样试试看
      • 没有这样的运气。有趣的是,这些术语似乎是彼此的别名。如果您尝试添加 NSAppTransportSecurity 密钥,它会说它已经存在。与字典中的值相同。迷人的
      猜你喜欢
      • 2023-04-05
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多