عميل Apache Commons HTTP - تسجيل بروتوكول معين
-
26-09-2019 - |
سؤال
أنا أعمل على مكتبة من المفترض أن يتم دمجها في التطبيقات الأخرى. لا بد لي من التواصل مع خادم HTTPS ، وأنا أستخدم Apache Commons HTTPClient 3.1. لدي مفتاح خاص بي وأحتاج إلى تسجيل أ بروتوكول عبر: Protocol.registerProtocol
. كنت أتساءل عما إذا كانت هناك طريقة لتسجيل هذا لمثيل العميل الخاص بي بدلاً من الثابت - بهذه الطريقة لا أفسد أي حالات أخرى ولا يفسد أحد.
لقد رأيت شيئًا حيث يمكنني الحصول على تكوين مضيف ومكالمة العملاء سيثوست, ، مع بروتوكول ، ولكن لا يبدو أنه يعمل بشكل صحيح. أنا أسجلها مثل:
HostConfiguration config = client.getHostConfiguration();
config.setHost(remoteUrl.getHost(), remoteUrl.getPort(), new Protocol("https", new MyProtocolSocketFactory(), 443));
ولكن عند محاولة إجراء اتصال ، تفشل مصافحة SSL ، بينما تعمل عند استخدام protocol.registerProtocol مع نفس المعلمات. الفشل هو المعيار:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
المحلول
الترقية إلى httpcomponents 4 وترك العميل 3.x وحده.