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).
Hai risolto il problema? Sto affrontando lo stesso problema qui – gfpacheco
@ gfpacheco Ho aggiornato il post con come abbiamo risolto il problema. – eimie