Приветствую!
Собственно сразу к делу. В ходе работы над тестовой программой возникла такая проблема: Java не хочет работать с Socks
4 прокси, вообще ни в какую. Объясняю ситуацию:
Есть код вида
con = (HttpURLConnection) obj.openConnection(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("host", *port*));
con.setConnectTimeout(Config.CONNECT_TIMEOUT);
con.setReadTimeout(Config.READ_TIMEOUT);
con.setRequestProperty("User-Agent", Config.USER_AGENT);
con.setDoOutput(false);
con.setDoInput(true);
con.setRequestMethod("GET");
con.connect();
Который, если сюда подставить socks 4 прокси, выдает:
java.net.SocketException: Malformed reply from SOCKS server
С socks 5 прокси все "ок".
Где-то за часа 2 активного поиска была найдена подобная тема:
bugs.java.com/view_bug.do?bug_id=6964547
И совет тут один: выставить socksProxyVersion, что я и делаю вот так:
System.setProperty("socksProxyVersion", "4");
Это не помогает. Более того! Начинается какая-то жуткая наркомания:
При первом запуске с установленным socksProxyVersion, т.е. я добавил в начало программы такой код:
System.setProperty("socksProxyVersion", "4");
он принял socks 4 прокси и заработал с ним. НО! При этом дальше вдруг отказался. Мистика заключается в том что если поменять код на:
System.setProperty("socksProxyVersion", "5");
а потом снова на
System.setProperty("socksProxyVersion", "4");
есть вероятность что это заработает.
Но опять же, при последних тестах не получилось!
НО!
Вот такая связка:
System.setProperty("socksProxyVersion", "4");
System.setProperty("socksProxyHost", "хост");
System.setProperty("socksProxyPort", "порт");
Работает с сокс 4/5 прокси, но мне надо для каждого потока разные прокси, соответственно данный вариант не подходит.
Не могли бы вы разъяснить ситуацию ? На одном из форумов посоветовали искать другие реализации, но пока не нашел.
Java:
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
Прокси:
Около 20 Socks 4 (все выдали Malformed), столько же Socks 5 (они Malformed не выдавали вообще).
Заранее спасибо за помощь..