2017-02-18 239 views
2

我试图通过调用一个服务器来获取一些信息,该服务器应该给我一些JSON对象(它发生在Safari上),但似乎在模拟器和Android上它最终SSL握手失败异常。 通常的调用是正常的http,它不能在iOS中使用,所以在Safari中简单地将它改为https就可以了,在Codenameone中导致SSL握手失败异常。 此外,WebBrowser组件中的相同技巧让我看到无线握手无线电的网页失败。ConnectionRequest上的SSL握手失败

我正在使用ConnectionRequest来获取JSON数据。

有没有办法在不改变服务器配置的情况下避免该异常?

+0

这是JavaSE中的一个问题,由于服务器中的证书颁发机构,您会看到这个问题。你可以这样解决它:http://stackoverflow.com/questions/6659360/how-to-solve-javax-net-ssl-sslhandshakeexception-error 请注意,在设备上这可能是一个问题,因为它是我们的控制。我假设这只是用于调试 –

回答

1

Codenameone与浏览器有点不同。浏览器可以为您提供安全弹出窗口,您可以选择忽略,但Codenameone不允许您将非安全http更改为https。

,您仍然可以使用普通的HTTP与您的应用程序并获得通过添加此版本暗示它在iOS工作:

ios.plistInject = <key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict><key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>com.myCompany.myPackageName.MyApp</string> </dict> <dict> <key>CFBundleURLSchemes</key> <array> <string>MyApp</string> </array> </dict> </array> 

如果你已经有一个ios.plistInject构建提示,只需在逗号后添加该值现有价值的前面。

com.myCompany.myPackageName.MyApp是您的反向域名加点您的应用程序名称。

+0

谢谢钻石,你真的存在!我阅读了关于构建提示,但我也读到,我必须解释为什么我希望我的应用程序不安全,所以我把它保持为最后一次机会。在将此作为解决方案之前,我将等待更好的解决方案! –

+0

在开发阶段使用此解决方案,并在您准备好上线时确保您的Web服务通信。 SSL证书每年只需要很多提供商花费少许钱,然后就可以切换到https。我明白为什么苹果会强制这样做,因为苹果应用商店应用程序的任何安全漏洞都会影响他们在移动领域的安全声誉。 – Diamond