2016-05-25 11 views
5

ü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).

+0

Haben Sie es geschafft, es zu beheben? Ich habe das gleiche Problem hier – gfpacheco

+0

@gfpacheco Ich habe den Beitrag mit wie wir das Problem behoben. – eimie

Antwort

4

Wir konnten dieses Problem beheben über:
1) Hinzufügen this solution auf der Android-Seite.
2) Anpassen, wie unser benutzerdefinierter Server seine öffentlichen Schlüssel bedient (was besonders wichtig war, damit Marshmallow sich mit dem Server verbinden konnte).