是的,SOverflow中有类似的问题,但遗憾的是我没有找到任何解决方案 .
我的目标是:通过JAVA中的socks(v4 | 5)获取网址内容
我的示例代码:
String result = "";
SocketAddress addr = new InetSocketAddress("180.211.179.30", 1080);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr);
URL url = new URL("http://api.exip.org/?call=ip");
URLConnection conn = url.openConnection(proxy);
BufferedReader in = new BufferedReader(
new InputStreamReader(
conn.getInputStream()));
StringBuilder response = new StringBuilder();
String inputLine;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
result = response.toString();
System.out.println(result);
但它始终返回 "java.net.SocketException: Malformed reply from SOCKS server" ,而它与http(s)代理类型一起使用 .
线程“main”java.net.SocketException中的异常:java.net.SocksSocketImpl.readSocksReply(SocksSocketImpl.java:128)上的SOCKS服务器在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:459)处的错误回复.net.Socket.connect(Socket.java:579)位于sun.net.www的sun.net.NetworkClient.doConnect(NetworkClient.java:180)的java.net.Socket.connect(Socket.java:528) . http.HttpClient.openServer(HttpClient.java:378)位于sun.net.www.http.HttpClient . (http:1.23 sun.net.www.http.HttpClient.New(HttpClient.java:290)at sun.net.www.http.HttpClient.New(HttpClient.java:306)at sun.net.www.protocol.http.HttpURLConnection . getNewHttpClient(HttpURLConnection.java:995)at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:974)at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:849)在sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection) .java:1299)at app.speedproxy.model.utils.TestJava.main(TestJava.java:33)Java结果:1
My system config: Ubuntu 12.04 with Oracle JVM
我已经尝试了appache的httpclient和scocketfactory实现,但同样的异常发生 . 如果你们中的任何人能够反思,我将不胜感激 . 谢谢 .