如果我这样做......
conn = new URL(urlString).openConnection();
System.out.println("Proxy? " + conn.usingProxy());
打印
Proxy? false
问题是,我支持代理。 JVM从哪里获取Windows上的代理信息?我该如何设置?我的所有其他应用程序似乎对我的代理非常满意。
答案 0 :(得分:312)
从java 1.5开始,您还可以将java.net.Proxy实例传递给openConnection(proxy)
方法:
//Proxy instance, proxy ip = 10.0.0.1 with port 8080
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("10.0.0.1", 8080));
conn = new URL(urlString).openConnection(proxy);
如果您的代理需要身份验证,它会给您回复407。
在这种情况下,您需要以下代码:
Authenticator authenticator = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return (new PasswordAuthentication("user",
"password".toCharArray()));
}
};
Authenticator.setDefault(authenticator);
答案 1 :(得分:32)
这很容易从互联网上回答。设置系统属性http.proxyHost
和http.proxyPort
。您可以使用System.setProperty()
执行此操作,也可以使用-D
语法从命令行执行此操作。
答案 2 :(得分:19)
通过两个系统属性支持代理:http.proxyHost和http.proxyPort。它们必须分别设置为代理服务器和端口。以下基本示例说明了它:
String url = "http://www.google.com/",
proxy = "proxy.mydomain.com",
port = "8080";
URL server = new URL(url);
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",proxy);
systemProperties.setProperty("http.proxyPort",port);
HttpURLConnection connection = (HttpURLConnection)server.openConnection();
connection.connect();
InputStream in = connection.getInputStream();
readResponse(in);
答案 3 :(得分:10)
在openConnection之前设置以下内容,
System.setProperty("http.proxyHost", "host");
System.setProperty("http.proxyPort", "port_number");
如果代理需要身份验证,
System.setProperty("http.proxyUser", "user");
System.setProperty("http.proxyPassword", "password");
答案 4 :(得分:10)
您也可以设置
-Djava.net.useSystemProxies=true
在Windows和Linux上,这将使用系统设置,因此您无需重复自己(干)
http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html#Proxies
答案 5 :(得分:5)
对于Java 1.8及更高版本,您必须设置-Djdk.http.auth.tunneling.disabledSchemes=
以使代理使用基本授权使用https。
答案 6 :(得分:2)
批准的答案将有效...如果您知道您的代理主机和端口=)。但是,如果您正在寻找代理主机和端口,下面的步骤应该有帮助
的bekur如果给出了自动配置的代理:那么
1>打开IE(或任何浏览器)
2 - ;通过IE->工具 - >互联网从您的浏览器获取网址 option-> connections-> LAN Settings->获取地址并在URL中输入例如:as http://autocache.abc.com/并输入,将下载一个文件 .pac格式,保存到桌面
3>在textpad中打开.pac文件,识别PROXY:
在你的编辑器中,它会像:
返回“PROXY web-proxy.ind.abc.com:8080; PROXY proxy.sgp.abc.com:8080" ;
一旦你有主机和端口刚刚进入这个和你的好去
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("web-proxy.ind.abc.com", 8080));
URLConnection connection = new URL(url).openConnection(proxy);