تستهلك خدمة الويب المريحة من خلال وكيل الويب

StackOverflow https://stackoverflow.com/questions/3023885

  •  26-09-2019
  •  | 
  •  

سؤال

أحاول استهلاك خدمة ويب مريحة في جافا باستخدام إطار الغضب أباتشي من خلال وكيل الويب الخاص بي الذي يتطلب المصادقة

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top