Answers:
从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);
new PasswordAuthentication("domainName\\user", "password".toCharArray());
从互联网上很容易回答。设置系统属性http.proxyHost
和http.proxyPort
。您可以使用System.setProperty()
,也可以使用-D
语法从命令行执行此操作。
通过两个系统属性支持代理: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);
commons-httpclient
什么?由于Java支持代理和身份验证(如您在此处提到的stackoverflow.com/questions/1626549/…),对于简单的情况(例如从公共HTTP服务器检索一个文件),没有理由使用Apache库。您有什么建议?
systemProperties
不使用变量connection
!
您也可以设定
-Djava.net.useSystemProxies=true
在Windows和Linux上,这将使用系统设置,因此您无需重复自己(DRY)
http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html#Proxies
System.setProperty
对https.proxyHost
和https.proxyPort
出于某种原因未切割的芥末。
在openConnection之前设置以下内容,
System.setProperty("http.proxyHost", "host");
System.setProperty("http.proxyPort", "port_number");
如果代理要求验证,
System.setProperty("http.proxyUser", "user");
System.setProperty("http.proxyPassword", "password");
如果您知道您的代理主机和port =),则已批准的答案将起作用。但是,如果您正在寻找代理主机和端口,则以下步骤应该会有所帮助
如果给出了自动配置的代理:则
1>打开IE(或任何浏览器)
2>通过IE->工具-> Internet选项->连接-> LAN设置->获取地址并输入url,例如:http ://autocache.abc.com/,从浏览器获取URL地址, 并输入一个文件将以.pac格式下载,保存到桌面
3>在文本键盘中打开.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);