HttpURLConnection使用代理服务器

目前网络上最流行的协议就是HTTP协议。HTTP协议有许多优点,例如它能够穿越防火墙。同时HTTP也是很多其他协议的基础,例如SOAP协议就是建立在HTTP协议之上的。 Java通过两种APIHTTP提供支持,一种是servlet API,它覆盖了服务器端的编程问题;另一种是java.net包,它通过HttpURLConnection类在客户端提供了对HTTP协议的支持。

Java中可以使用HttpURLConnection来请求WEB资源。

HttpURLConnection对象不能直接构造,需要通过URL.openConnection()来获得HttpURLConnection对象,示例代码如下:

String szUrl = "http://www.ee2ee.com/";

URL url = new URL(szUrl);

HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();

//设置代理服务器

Properties systemProperties = System.getProperties();

systemProperties.setProperty("http.proxyHost",proxy);

systemProperties.setProperty("http.proxyPort",port);

urlCon .setConnectTimeout();//设置连接主机超时(单位:毫秒)

urlCon .setReadTimeout();//设置从主机读取数据超时(单位:毫秒)

urlCon.setDoOutput(true);

urlCon.setRequestMethod("POST");

String username="username=02000001";

urlCon.getOutputStream().write(username.getBytes()); 

urlCon.getOutputStream().flush();

urlCon.getOutputStream().close();

 

HttpURLConnection通过验证类支持代理服务器验证。首先需要实现一个验证者:

public class SimpleAuthenticatorextends Authenticator{

private String username,password;

public SimpleAuthenticator(String username,String password){

this.username = username;

this.password = password;

}

protected PasswordAuthentication getPasswordAuthentication(){

return new PasswordAuthentication(username,password.toCharArray());

}

}

然后,通过Authenticator.setDefault()方法注册验证者:

Authenticator.setDefault(new SimpleAuthenticator(username,password));
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",proxy);
systemProperties.setProperty("http.proxyPort",port);
HttpURLConnection connection = (HttpURLConnection)server.openConnection();
connection.connect();

你可能感兴趣的:(纯粹的JAVA)