目前网络上最流行的协议就是HTTP协议。HTTP协议有许多优点,例如它能够穿越防火墙。同时HTTP也是很多其他协议的基础,例如SOAP协议就是建立在HTTP协议之上的。 Java通过两种API对HTTP提供支持,一种是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();