2014-02-04 3 views
0

Может у меня помочь, у меня та же проблема, что описанный здесь: http://bugs.java.com/view_bug.do?bug_id=6964547Java SOCKS v4 Proxy

Java работает хорошо с Socks 5 прокси, но с носками 4 прокси:

java.net.SocketException: Malformed reply from SOCKS server 

Источник как : URL obj = новый URL (url);

 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(); 

Я проверил много прокси-сервера v4, они не работают. Также не помогает добавление пропеллер:

System.setProperty("socksProxyVersion", "4"); 

Любые идеи об этой проблеме?: D

Спасибо за помощь.

+0

Там нет такого свойства, как 'socksProxyVersion.' Престола [Java Networking и Proxies] (http://docs.oracle.com/javase/7 /docs/technotes/guides/net/proxies.html). – EJP

ответ

0

С JDK 7 они добавили socksProxyVersion, но вы не можете установить его для индивидуальных подключений.

Предлагаемый объект socksProxyVersion не имеет никакого отношения к прокси SOCKS, установленному программно через java.net.Proxy.

0

Я использовал это, она работает очень хорошо:

Socket s; 
try { 
    s = new Socket(new Proxy(Proxy.Type.SOCKS, proxy)); 
    s.setSoTimeout(5000); 
    s.connect(google); 
    s.close(); 
} catch(Throwable t) { 
    s = new Socket(new Proxy(Proxy.Type.SOCKS, proxy)); 
    Method m = s.getClass().getDeclaredMethod("getImpl"); 
    m.setAccessible(true); 
    Object sd = m.invoke(s); 
    m = sd.getClass().getDeclaredMethod("setV4"); 
    m.setAccessible(true); 
    m.invoke(sd); 
    s.setSoTimeout(5000); 
    s.connect(google); 
    s.close(); 
} 
Смежные вопросы