Опитвам се да получа съдържанието на 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