是的,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:来自SOCKS服务器的格式错误的回复”,而它与http(s)代理类型一起使用。
线程“main”中的异常java.net.SocketException:格式错误的回复 来自SOCKS服务器 java.net.SocksSocketImpl.readSocksReply(SocksSocketImpl.java:128)at at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:459)at java.net.Socket.connect(Socket.java:579)at java.net.Socket.connect(Socket.java:528)at sun.net.NetworkClient.doConnect(NetworkClient.java:180)at sun.net.www.http.HttpClient.openServer(HttpClient.java:378)at sun.net.www.http.HttpClient.openServer(HttpClient.java:473)at sun.net.www.http.HttpClient。(HttpClient.java:203)at 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) 在 sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:974) 在 sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:849) 在 sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1299) 在app.speedproxy.model.utils.TestJava.main(TestJava.java:33)Java 结果:1
我的系统配置:带有Oracle JVM的Ubuntu 12.04
我已经尝试了appache的httpclient和scocketfactory实现,但是发生了同样的异常。 如果你们中的任何人能够反思,我将不胜感激。 感谢。