2017-02-18 417 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