2016-05-14 15 views
14

मुझे समस्या है जब मैं POST विधि के साथ पेपैल रेस्ट एपीआई से कनेक्ट करना चाहता हूं। जब मैं modernhttpclient उपयोग नहीं कर रहा मैं त्रुटिएंड्रॉइड 4.4 पर एसएसएल हैंडशेक अपवाद और निचले

The authentication or decryption has failed. 

मिला लेकिन और यह एंड्रॉयड एपीआई 23 (Marshmallow) में काम करते हैं, जब मैं modernhttpclient उपयोग कर रहा हूँ जब मैं एंड्रॉयड एपीआई 19 (डिवाइस) और एंड्रॉयड एपीआई 16 (एमुलेटर) मैं में परीक्षण ssl handshake exception android मैं कस्टम सॉकेट कारखाना उपयोग करने की आवश्यकता के अनुसार त्रुटि

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

मिला है। लेकिन मैं इसे HttpClient या modernHttpClient में कैसे कार्यान्वित कर सकता हूं?

+0

क्या आप वर्तमान में 'Xamarin.Android' का संस्करण उपयोग कर रहे हैं? – SushiHangover

+0

Xamarin.Android संस्करण: 6.1.0.56 (Xamarin व्यवसाय) – albilaga

+0

ठीक है, हम अल्फा 6.1.99.xxx का उपयोग कर रहे हैं और एक समान (लेकिन अलग ;-) मुद्दा है और "मूल" जावा एपीआई का उपयोग करने का प्रयास किया है, यानी 'HttpURLConnection' 'स्ट्रीम' के साथ 'HttpClient' समस्याओं के कारण हमारी पोस्ट करने के लिए और स्ट्रीम समस्या के जावा IO अंत प्राप्त करने के कारण। नेट फ्रेमवर्क को छोड़कर यह हमारे लिए हल हो गया। – SushiHangover

उत्तर

6

सुनिश्चित नहीं हैं कि अगर मैं पूरी तरह से अपने सवाल का जवाब कर सकते हैं, लेकिन मैं इसे एक कोशिश दे देंगे:

आप Paypal REST API का अंत बिंदु का विश्लेषण करें, तो https://www.ssllabs.com/ssltest/analyze.html?d=api.sandbox.paypal.com&hideResults=on तरह एसएसएल लैब्स के साथ उदाहरण के लिए, आप वे केवल समर्थन को देखने के टीएलएस 1.2 प्रोटोकॉल।

अब एंड्रॉइड एपीआई लेवल 16 के बाद से इसका समर्थन करता है, क्योंकि आप यहां https://developer.android.com/reference/javax/net/ssl/SSLSocket.html देख सकते हैं, लेकिन यह डिफ़ॉल्ट रूप से अक्षम है और केवल API स्तर 20+ में सक्षम है।

Xamarin मंचों किसी में 16 ModernHttpClient forking और एक बेहतर एसएसएल सॉकेट कारखाने जोड़कर 19 के लिए API स्तरों के साथ Android के लिए TLS 1.2 को सक्षम करने के लिए एक समाधान तैनात: https://forums.xamarin.com/discussion/63005/modernhttpclient-tls-1-2-android-api-19

यह उन Android संस्करण के साथ अपने मुद्दे को ठीक करना चाहिए, लेकिन यह एंड्रॉइड 4.1 से पहले संस्करणों में आपकी मदद नहीं करेगा।

0

मूल रूप से इस मुद्दे पर आता है जब सर्वर साइड पर एसएसएल, एक टूटी हुई श्रृंखला सर्वर पूरा श्रृंखला शामिल करने की जरूरत है और अधिक जानकारी के लिए मध्यवर्ती रूट चेन,

शामिल करें एक इस लिंक का उल्लेख किया है।

https://developer.android.com/training/articles/security-gms-provider.html

मैं onCreate में यह प्रारंभ (:

https://developer.android.com/training/articles/security-ssl.html

1

आप गूगल से ProviderInstaller Play सेवाओं का उपयोग कर सकते हैं, यह एक और अधिक हाल ही गूगल द्वारा प्रदान की एक के साथ प्रणाली एसएसएल प्रदाता को बदल देता है) मेरे आवेदन के और वह त्रुटि चली गई है। मुझे यकीन है कि आप किसी भी तरह Xamarin से ऐसा कर सकते हैं।

संबंधित मुद्दे