0

是的,SOverflow 中有类似的问题,但不幸的是我没有从他们那里找到任何解决方案。

我的目标是:在 JAVA 中通过 socks(v4|5) 获取 url 内容

我的示例代码:

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

但它在使用 http(s) 代理类型时总是返回“java.net.SocketException:来自 SOCKS 服务器的格式错误的回复” 。

线程“主”java.net.SocketException 中的异常:来自 java.net.SocksSocketImpl.readSocksReply(SocksSocketImpl.java:128) 的 SOCKS 服务器在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:459) 处的错误回复。 net.Socket.connect(Socket.java:579) 在 java.net.Socket.connect(Socket.java:528) 在 sun.net.NetworkClient.doConnect(NetworkClient.java:180) 在 sun.net.www.http .HttpClient.openServer(HttpClient.java:378) 在 sun.net.www.http.HttpClient.openServer(HttpClient.java:473) 在 sun.net.www.http.HttpClient.(HttpClient.java:203) 在 sun .net.www.http.HttpClient.New(HttpClient.java:290) 在 sun.net.www.http.HttpClient.New(HttpClient.java:306) 在 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 实现,但发生了同样的异常。如果你们中的任何人能够反思它,我将不胜感激。谢谢。

4

0 回答 0