2016-05-14 11 views
14

Ho un problema quando voglio connettermi con Paypal Rest API con il metodo POST. Quando non sto usando modernhttpclient ho ottenuto l'erroreSSLHandshakeException su Android 4.4 e inferiore

The authentication or decryption has failed. 

Ma quando io sto usando modernhttpclient funziona in API Android 23 (Marshmallow) e quando prova a API Android 19 (dispositivo) e API 16 (emulatore) I Android ha ricevuto l'errore

ex {Javax.Net.Ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=…} Javax.Net.Ssl.SSLHandshakeException 

Secondo ssl handshake exception android ho bisogno di utilizzare personalizzato fabbrica presa. Ma come posso implementarlo in HttpClient o modernoHttpClient?

+0

Quale versione di 'Xamarin.Android' stai attualmente utilizzando? – SushiHangover

+0

Xamarin.Android Versione: 6.1.0.56 (Xamarin Business) – albilaga

+0

Ok, stiamo usando Alpha 6.1.99.xxx e abbiamo un problema simile (ma diverso ;-) e abbiamo fatto ricorso all'API Java "nativa", vale a dire 'HttpURLConnection' per fare i nostri post a causa di problemi di' HttpClient' con le registrazioni di un 'Stream' e di ottenere un problema di end of stream Java IO. Saltare il framework .Net l'ha risolto per noi. – SushiHangover

risposta

6

Non so se posso rispondere pienamente alla tua domanda, ma io fare un tentativo:

Se si analizza l'endpoint Paypal REST API, ad esempio con Labs SSL in questo modo https://www.ssllabs.com/ssltest/analyze.html?d=api.sandbox.paypal.com&hideResults=on, si vede che solo il supporto il protocollo TLS 1.2.

Ora Android supporta questo dal livello API 16, come potete vedere qui https://developer.android.com/reference/javax/net/ssl/SSLSocket.html, ma è disabilitato per impostazione predefinita e solo in Livelli API 20+ lo hanno abilitato.

Nel Xamarin forum qualcuno ha postato una soluzione per abilitare TLS 1.2 per Android con i livelli di API da 16 a 19 da sborsare ModernHttpClient e l'aggiunta di una migliore fabbrica presa SSL: https://forums.xamarin.com/discussion/63005/modernhttpclient-tls-1-2-android-api-19

Questo dovrebbe risolvere il problema con le versioni di Android, ma non ti aiuterà con le versioni precedenti a Android 4.1.

Problemi correlati