2017-02-18 3 views
2

Ich möchte einige Informationen in einem Stream mit einem Aufruf an einen Server abrufen, der mir ein JSON-Objekt geben sollte (und es passiert mit Safari), aber es scheint sowohl auf Simulator und Android es endet Bei fehlgeschlagener SSL-Handshake-Ausnahme. Der übliche Anruf ist normale http, die nicht mehr in iOS verwendet werden kann, während in Safari einfach ändern Sie es auf https tun den Trick, in Codenameone führt zu SSL Handshake gescheitert Ausnahme. Der gleiche Trick in einer WebBrowser-Komponente ließ mich die Webseite des Radios sehen, ohne dass der SSL-Handshake fehlschlug.SSL-Handshake bei ConnectionRequest fehlgeschlagen

Ich verwende ConnectionRequest, um JSON-Daten abzurufen.

Gibt es eine Möglichkeit, diese Ausnahme zu vermeiden, ohne die Serverkonfiguration zu ändern?

+0

Das ist ein Problem in JavaSE, das Sie aufgrund der Zertifizierungsstelle auf Ihrem Server sehen. Sie können es folgendermaßen umgehen: http://stackoverflow.com/questions/6659360/how-to-solve-javax-net-ssl-sslhandshakeexception-error Beachten Sie, dass auf dem Gerät dies ein Problem sein kann, wie es außerhalb ist unsere Kontrolle. Ich nehme an, das ist nur zum Debuggen –

Antwort

1

Codenameon funktioniert ein wenig anders als Browser. Browser können Ihnen ein Sicherheitspopup geben, das Sie ignorieren können, aber Codenameone erlaubt Ihnen nicht, nur nicht sichere http zu https zu ändern.

Sie können noch normal http mit Ihrer App verwenden und bekommen es Hinweis, indem Sie diesen Build auf iOS zu arbeiten:

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> 

Wenn Sie bereits ein ios.plistInject Build Hinweis haben, fügen Sie einfach diesen Wert nach einem Komma in vor dem vorhandenen Wert.

com.myCompany.myPackageName.MyApp ist Ihr Reverse-Domain-Name Punkt Ihrer App-Name.

+0

Danke Diamond, du bist wirklich anwesend! Ich habe über diesen Build-Hinweis gelesen, aber ich habe auch gelesen, dass ich Apple erklären muss, warum ich möchte, dass meine App unsicher ist, also behalte ich sie als die allerletzte Chance. Ich werde auf bessere Lösungen warten, bevor ich dies als Lösung nehme! –

+0

Nutzen Sie diese Lösung während der Entwicklungsphase und sichern Sie Ihre Webservice-Kommunikation, wenn Sie bereit sind, live zu gehen. Ein SSL-Zertifikat kostet nur wenige Dollar pro Jahr von vielen Anbietern und Sie können dann zu https wechseln. Ich verstehe, warum Apple dies erzwingt, da Sicherheitsverletzungen in Apple App Store-Apps immer ihre Sicherheitsreputation im mobilen Bereich beeinträchtigen. – Diamond

Verwandte Themen