تستهلك خدمة الويب المريحة من خلال وكيل الويب
سؤال
أحاول استهلاك خدمة ويب مريحة في جافا باستخدام إطار الغضب أباتشي من خلال وكيل الويب الخاص بي الذي يتطلب المصادقة
ClientConfig clientConfig = new ClientConfig();
clientConfig.proxyHost("proxy.school.com");
clientConfig.proxyPort(3128);
//nothing to set username and password :(
RestClient client = new RestClient(clientConfig);
Resource resource = client.resource("http://vimeo.com/api/v2/artist/videos.xml");
String response = resource.accept("text/plain").get(String.class);
لقد حاولت أيضًا استخدام BasicAuthSecurityHandler
ولكن يبدو أنه يستخدم للمصادقة مباشرة على خادم الويب ، وليس وكيل الويب
BasicAuthSecurityHandler basicAuthHandler = new BasicAuthSecurityHandler();
basicAuthHandler.setUserName("username");
basicAuthHandler.setPassword("password");
config.handlers(basicAuthHandler);
لا يزال يفشل مع رمز الخطأ HTTP 407: مصادقة الوكيل المطلوبة.
لقد غوغل بأفضل ما أستطيع ، لم يسبق له أن جاء لاستخدام خدمة ويب من عميل Java من خلال وكيل ويب ، إذا كان لدى شخص ما فكرة أخرى ، فلا تتردد في الرد
المحلول
حسنًا ، كان هذا صعبًا جدًا لكنني وجدت ذلك! قمت بتسجيل طلبات HTTP التي تم إجراؤها من متصفحي مع العابث واكتشف أن Proxy-Connection
و Proxy-Authorization
كان ما كنت أبحث عنه بعد قراءة وثائق مكثفة مثل RFC 2616 حول HTTP/1.1
لذلك قمت بنسخ القيم التي تم إرسالها إلى رمز Java الخاص بي:
resource.header("Proxy-Connection", "Keep-Alive");
resource.header("Proxy-Authorization", "Basic encodedString");
أين encodedString
هو ما يتم إرساله من قبل متصفحي: username:password
BASE64 مشفرة
وهو يعمل الآن بشكل مثالي :)
نصائح أخرى
أثيرت هذه المشكلة على أنها [1] ومنذ ذلك الحين تم حلها مع إضافة ProxyauthSecurityHandler المتاحة لمطوري عملاء Apache Wink.
[1]: https://issues.apache.org/jira/browse/wink-292 Apache Wink Jira issue Wink-292