在 Java 中代理服务器的基本设置是通过设置系统属性来完成的。而代理服务器的验证则是通过设置 Http 请求头来完成的。
下面的是一个简单的例子供大家参考:
// 根据地址 url 打开 Http 连接
HttpURLConnection con = (HttpURLConnection)( new URL( url ) ).openConnection();
if (proxy.hasProxy()) {
// 注意: 如果 proxySet 为 false 时,依然设置了 proxyHost 和 proxyPort,代理设置仍会起作用。
// 如果 proxyPort 设置有问题,代理设置不会起作用。
System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", proxy.getProxyHost() );
System.getProperties().put( "proxyPort", String.valueOf( proxy.getProxyPort() ) );
// 如果需要代理服务器验证,在 Http 请求头中加入 Proxy-Authorization 头,
// 格式为: "Basic " + ("代理服务器用户名:密码"的 BASE64 编码)
if (proxy.needAuth()) {
con.setRequestProperty( "Proxy-Authorization", "Basic " + Encoder.base64Encode( proxy.getProxyUser() + ":" + proxy.getProxyPass() ) );
}
}