无法使用代号一下的 iOS 9.x 设备连接到 HTTP URL

Unable To Connect to HTTP URL with iOS 9.x device under Codename One

我在 Java 运行 中有一个 Web 服务到 Glassfish。 当我尝试在 iOS 中使用此 WS 时,它不起作用,方法 ConnectionRequest.readResponse(InputStream input) 接收到没有信息的输入。 如果我尝试将它转换为 byte[] 它 returns NULL.

实际上服务并没有到达WS。但是它传递给方法 ConnectionRequest.readResponse.

当使用带@GET 注释的 WS 并使用 GET 时,它也有效。

由于最近的安全漏洞,Apple 阻止了一些对不安全 URL 的访问,这意味着之前有效的 http 代码可能会在 iOS 9 上停止工作。这通常是一个很好的举措,您应该使用 https 并尽可能避免使用 http 但这有时是不切实际的,尤其是在使用内部或调试环境时(设置 SSL 很痛苦)。

我们考虑过在默认情况下添加所需的构建提示,但如果您只是包含它并且没有充分的理由,Apple 似乎会拒绝您的应用。我们本可以只为了调试而这样做,但人们可能 运行 在生产中使用它。

目前的解决方案是使用古老的 ios.plistInject 构建提示并将其设置为:

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

https://www.codenameone.com/blog/hiding-url-security-advocacy.html