java中网络设置代理
三种方式:
1.JVM启动时加参数设置代理
在系统启动时,使用-D项来设置代理。
例如:
java -Dhttp.ProxyHost="proxyUrl" -Dhttp.ProxyPort="proxyPort" "java项目"
代理的作用域:整个系统
2.代码中设置系统参数
其中,代理类型有http、https、socks等,代理属性有:
proxyHost(代理的IP或域名);
proxyPort(代理的端口号);
proxyUser(用户名);
proxyPassword(密码);
nonProxyHosts(不使用代理的列表)。
代理属性中的proxyUser(用户名)、proxyPassword(密码)、nonProxyHosts(不使用代理的列表)不是必须的
System.setProperty("http.proxyHost", "proxyUrl");
System.setProperty("http.proxyPort", "proxyPort");
System.setProperty("http.nonProxyHosts", "url1 | url2");
代理的作用域:整个系统
3.代码中对单个URL设置代理
public static String httpRequest(String requestUrl, String requestMethod, String outputStr) {
StringBuffer buffer = null;
try {
URL url = new URL(requestUrl);
SocketAddress sa = new InetSocketAddress("proxyUrl", proxyPort);
Proxy proxy = new Proxy(Proxy.Type.HTTP, sa);
HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
conn.setRequestProperty("Authorization","***");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod(requestMethod);
conn.connect();
if (null != outputStr) {
OutputStream os = conn.getOutputStream();
os.write(outputStr.getBytes("utf-8"));
os.close();
}
InputStream is = conn.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader br = new BufferedReader(isr);
buffer = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null) {
buffer.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}
return buffer.toString();
}
代理的作用域:指定URL