我想通过POST方法连接Paypal Rest API时遇到问题。当我不使用modernhttpclient时出现错误
The authentication or decryption has failed.
但是,当我使用modernhttpclient时,它可以在Android API 23(棉花糖)中使用,而当我在Android API 19(设备)和Android API 16(仿真器)中进行测试时,出现了错误
ex {Javax.Net.Ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=…} Javax.Net.Ssl.SSLHandshakeException
根据ssl握手异常android,我需要使用自定义套接字工厂。但是如何在HttpClient或modernHttpClient中实现呢?
不知道我能否完全回答您的问题,但是我将尝试一下:
如果您使用类似https://www.ssllabs.com/ssltest/analyze.html?d=api.sandbox.paypal.com&hideResults=on之类的SSL Labs分析Paypal REST API端点,则会看到它们仅支持TLS 1.2协议。
现在Android自API级别16开始就支持此功能,您可以在此处看到https://developer.android.com/reference/javax/net/ssl/SSLSocket.html,但是默认情况下它是禁用的,并且仅在API级别20+中被禁用他们启用了它。
在Xamarin论坛上,有人发布了一个解决方案,通过派生ModernHttpClient并添加改进的SSL套接字工厂来启用具有API级别16至19的Android TLS 1.2:https ://forums.xamarin.com/discussion/63005/modernhttpclient-tls-1 -2-android-api-19
这应该可以解决您使用这些Android版本的问题,但对于使用Android 4.1之前的版本没有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句