JAVA HttpURLConnection连接+代理

时间:2014-11-14 13:13:11

标签: java

我正在尝试使用HttpURLConnection在Java中执行GET请求。然而,每次我这样做,每次都会收到400:不良请求。我需要更改什么才能使其正常工作?

当我在代理后面的计算机上使用它时,我有一个错误。 而且当我使用Curl与PHP和这个代理时,它没有密码或身份验证的workink,所以我认为问题不存在。

如果有人知道为什么?

谢谢

错误:

url connect ...
ERROR = 400
sun.net.www.protocol.http.HttpURLConnection:http://google.com
Bad request
sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@133796

这是我的代码:

package test;

import java.net.*;
import java.io.*;

public class Connect {

    public static void main(String[] args) {
        HttpURLConnection connexion = null;

        try {
            URL url = new URL("http://google.com");

            System.setProperty("http.proxyHost", "IP_PROXY");
            System.setProperty("http.proxyPort", "80");

            System.out.println("url connect...");
            connexion = (HttpURLConnection) url.openConnection();

            connexion.setRequestMethod("GET");


            InputStream is;

            if (connexion.getResponseCode() >= 400) {
                System.out.println("Erreur = " + connexion.getResponseCode());
                System.out.println(connexion.toString());
                System.out.println(connexion.getResponseMessage());
                System.out.println(connexion.getErrorStream());

            } else if (connexion.getResponseCode() != HttpURLConnection.HTTP_OK) {
                System.out.println(connexion.getResponseMessage());
            } else {
                System.out.println(is = connexion.getInputStream());
            }
        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            connexion.disconnect();
        }
        System.exit(0);
    }
}

2 个答案:

答案 0 :(得分:0)

URL为您提供了设置代理的方法。

url.openConnection(new Proxy(...));

最好的问候

答案 1 :(得分:0)

感谢您的回答

在这段代码中,我使用了System属性setter:System.setProperty 但就在我这样做之前:

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("IP_PROXY", 80));
connexion = (HttpURLConnection) url.openConnection(proxy);

但同样的结果,我确定端口是80,而不是8080