überprüfen Wenn Parse
auf Android
Initialisierung, ich bin in der Lage, erfolgreich an den Parse-Server zu verbinden, wenn:
1) Ich habe keinen Server-URL angeben oder
2) habe ich die Server-URL zum Parse-Server.
Da wir unsere Daten letztendlich von Parse auf einen anderen Host migrieren möchten, möchten wir eine Verbindung zu einer anderen Server-URL herstellen. Wenn ich jedoch versuche, eine andere Server-URL anzugeben (https://api.ourhostname.com/1/), die den Parse-Server umleitet (als Proxy dient), kann die App keine Verbindung zum Server herstellen. Wenn diese Server-URL aus dem iOS-Projekt implementiert wird, funktioniert sie einwandfrei. Wenn jedoch im Android äquivalent umgesetzt:Android Parse-Implementierung kann keine benutzerdefinierten Server-Hostnamen
Parse.initialize(new Parse.Configuration.Builder(this)
.applicationId(APP_ID)
.clientKey(CLIENT_KEY)
.server("https://api.ourhostname.com/1/")
.build()
);
ich einen i/o Ausfall erhalten:
05-24 21:46:55.319 7140-7140/com.ourapp W/System.err: com.parse.ParseRequest$ParseRequestException: i/o failure
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err: at com.parse.ParseRequest.newTemporaryException(ParseRequest.java:290)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err: at com.parse.ParseRequest$2.then(ParseRequest.java:145)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err: at com.parse.ParseRequest$2.then(ParseRequest.java:139)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err: at bolts.Task$15.run(Task.java:917)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err: at java.lang.Thread.run(Thread.java:818)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err: Caused by: javax.net.ssl.SSLPeerUnverifiedException: Cannot verify hostname: api.ourhostname.com
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err: at android.net.SSLCertificateSocketFactory.verifyHostname(SSLCertificateSocketFactory.java:242)
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err: at android.net.SSLCertificateSocketFactory.createSocket(SSLCertificateSocketFactory.java:486)
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err: at com.android.okhttp.Connection.upgradeToTls(Connection.java:1226)
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err: at com.android.okhttp.Connection.connect(Connection.java:1183)
...
Von einem Web-Browser, ich bin in der Lage unsere eigenen Server-URL zu besuchen, die vertrauenswürdig ist und gültig vom Browser, dh es ist nicht selbstsigniert.
Hat jemand anderes dieses Problem von ihrem Android-Projekt und irgendwelche Vorschläge, wie Sie das Parse SDK erfolgreich zu einer benutzerdefinierten Server-URL verbinden können, gefunden?
UPDATE: Wir konnten dieses Problem über beheben:
1) this solution auf der Android Seite hinzufügen.
2) Anpassen, wie unser benutzerdefinierter Server seine öffentlichen Schlüssel bedient (was besonders wichtig war, damit Marshmallow sich mit dem Server verbinden konnte).
Haben Sie es geschafft, es zu beheben? Ich habe das gleiche Problem hier – gfpacheco
@gfpacheco Ich habe den Beitrag mit wie wir das Problem behoben. – eimie