下次当你再构建涉及 Web 的应用程序时,如果遇到 Java API 不够用的情况,Jakarta Commons 的HTTP Client 可能可以帮上你的忙。HTTP Client 的用法非常简单:创建HttpClient的一个实例,创建需要使用的方法类型的一个实例,然后使用HttpClient的实例执行这个方法。
下面这个例子首先读取一个 Web 页面然后将页面内容显示到标准输出上。
HttpClient client = new HttpClient();
GetMethod get = new GetMethod("http://www.google.com/");
client.executeMethod(get);
System.out.println(get.getResponseBodyAsString());
现在假设你需要使用基本的身份验证机制来访问一个页面。在这种情况下,你需要使用 HTTP Client 类UsernamePasswordCredentials。下面是添加这个类实现这一要求的代码:
UsernamePasswordCredentialsupc =
new UsernamePasswordCredentials("foo",
"bar");
client.getState().setCredentials(null, null, upc);
get.setDoAuthentication(true);
在下面的代码中,我们向 get 方法添加了一个超时期,以防页面下载时间过长。
client.setConnectionTimeout(60000);
如示例代码所示,HTTP Client 中特性的使用非常简单。如果你的应用程序需要 HTTP 访问,那么可以使用HTTP Client。另外它还有很多其它功能,不局限于 Java API 中的涉及 Web 的类,而且用法都很简单。你可以看一下它是否符合你的需要。
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.methods.GetMethod;
public class HttpClientTip {
public static void main(String args[])
{
try {
HttpClient client = new HttpClient();
GetMethod get = new GetMethod("http://www.google.com/");
UsernamePasswordCredentialsupc =
new
UsernamePasswordCredentials("foo",
"bar");
client.getState().setCredentials(null,
null, upc);
get.setDoAuthentication(true);
client.setConnectionTimeout(60000);
client.executeMethod(get);
System.out.println(get.getResponseBodyAsString());
}
catch (IOException
e) {
e.printStackTrace();
}
}
}
访问Apache Jakarta Project 站点 可以查看更多 HTTP Client 的属性,包括 HTTPS、多部分 POST 和代理支持。