Я пытаюсь получить содержимое URL-адреса через аутентифицированный прокси-сервер. Это код, который я пытаюсь использовать:
Authenticator authenticator = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
System.out.println("authenticating");
return (new PasswordAuthentication("username", "password".toCharArray()));
}
};
Authenticator.setDefault(authenticator);
URL url = new URL("http://www.google.com");
InetSocketAddress proxyAddress = new InetSocketAddress("address.of.proxy", 6060);
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyAddress);
HttpURLConnection uc = (HttpURLConnection) url.openConnection(proxy);
uc.connect();
System.out.println(uc.getResponseCode());
По какой-то причине аутентификация попадает в цикл перенаправления, поэтому в результате аутентификатор печатает «аутентификацию» 20 раз, а затем исключение ProtocolException.
java.net.ProtocolException: Server redirected too many times (20)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1846)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
at java.net.URLConnection.getContent(URLConnection.java:739)
at proxytest.RunThis.main(RunThis.java:29)
Прокси работает с указанными учетными данными, я пробовал через браузер. Я пытаюсь заставить это работать в течение нескольких дней, я пытался настроить системные свойства, apache httpclient и все, что я мог получить от Google. Любые идеи приветствуются. :)
ОБНОВЛЕНИЕ:
Я тестировал с помощью WireShark, данные аутентификации прокси есть в запросе, но прокси выдает ошибку 407. Опять же, учетные данные в порядке, он отлично работает из браузера (я на самом деле скопировал их из исходного кода, чтобы убедиться).
Хотя есть одна вещь, которую я заметил. Значение заголовка Proxy-Authorization отличается одним и только одним символом между браузером и запросом, отправленным java. Может это что-то значит?
CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
я получаю тот же результат... - person Ben   schedule 08.01.2016