我正在尝试使用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);
}
}
答案 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