2016-05-25 7 views
5

Quando si inizializza Parse su Android, sono in grado di connettersi al server di Parse quando:
1) Io non specificare un URL del server, o
2) Ho impostato il server URL al server Parse.

Poiché intendiamo migrare in modo definitivo i nostri dati da Parse a un altro host, vorremmo connetterci a un altro URL del server. Tuttavia, quando provo a specificare un URL server diverso (https://api.ourhostname.com/1/) che reindirizza (serve come proxy) al server Parse, l'app non riesce a connettersi completamente al server. Se implementato dal progetto iOS, questo URL del server funziona correttamente. Tuttavia, una volta attuata con l'equivalente Android:implementazione Parse Android non è possibile verificare il nome host server personalizzato

Parse.initialize(new Parse.Configuration.Builder(this) 
     .applicationId(APP_ID) 
     .clientKey(CLIENT_KEY) 
     .server("https://api.ourhostname.com/1/") 
     .build() 
    ); 

ricevo un errore di I/O:

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

Da un browser web, sono in grado di visitare il nostro URL del server personalizzato, che è attendibile e valido dal browser, il che significa che non è autofirmato.

Qualcun altro ha riscontrato questo problema dal proprio progetto Android e qualche suggerimento su come ottenere correttamente l'SDK Parse per connettersi a un URL del server personalizzato?

UPDATE: Siamo stati in grado di risolvere questo problema tramite:
1) Aggiunta this solution sul lato Android.
2) Regolazione del modo in cui il nostro server personalizzato serve le sue chiavi pubbliche (che era particolarmente importante per consentire a Marshmallow di connettersi al server).

+0

Hai risolto il problema? Sto affrontando lo stesso problema qui – gfpacheco

+0

@ gfpacheco Ho aggiornato il post con come abbiamo risolto il problema. – eimie

risposta

4

Siamo stati in grado di risolvere questo problema tramite:
1) Aggiunta di this solution sul lato Android.
2) Regolazione del modo in cui il nostro server personalizzato serve le sue chiavi pubbliche (che era particolarmente importante per consentire a Marshmallow di connettersi al server).

Problemi correlati