Jakarta Commons————HttpClient

来源:互联网 发布:清华 软件 人工智能 编辑:程序博客网 时间:2024/06/05 17:00

概况

    这个API扩展了java.net包,提供了模拟浏览器的功能。

何时适用

   当你要构造Web浏览器的功能;当你的应用需要一种高效的办法进行HTTP/HTTPS通信时。

示例应用

   HttpClientDemo.java。要求CLASSPATH中有commons-httpclient.jar,common-logging.jar。要求使用JDK 1.4或更高版本。

https页面

    https://www.paypal.com/。同时确保%JAVA_HOME%/jre/lib/security/java.security文件包含了下面这行代码:security.provider.2=com.sun.net.ssl.internal.ssl.Provider,如果远程网站使用的根证书不被你使用的Java认可,则首先必须导入它的证书。

创建HttpClient

    HttpClient类可以看成是应用的主驱动程序,所有针对网络的功能都依赖于它。HttpClient类需要一个Connection Manager来管理连接。HttpConnectionManager允许我们创建自己的连接管理器,或者,我们也可以直接使用内建的SimpleHttpConnectionManager或MultiThreadedHttpConnectionManager类。如果在创建HttpClient时没有指定连接管理器,HttpClient默认使用SimpleHttpConnectionManager。

           // 创建一个HttpClient的实例

         HttpClient client = new HttpClient();

创建HttpMethod

     即确定与远程服务器的通信要采用哪种传输方式,HTTP允许采用的传输方式包括:GET,POST,PUT,DELETE,HEAD,OPTIONS,以及TRACE。这些传输方式分别作为一个独立的类实现,但所有这些类都实现HttpMethod接口。在本例中,我们使用的是GetMethod,创建GetMethod实例时在参数中指定我们想要GET的URL。

         // 创建一个HttpMethod的实例

        HttpMethod method = new GetMethod(url);

执行HttpMethod操作

    执行完毕后,executeMethod方法将返回远程服务器报告的状态代码。注意executeMethod属于HttpClient,而不是HttpMethod。

         // 执行HttpMethod定义的提取操作

         statusCode = client.executeMethod(method);

读取服务器返回的应答

      如果前面的连接操作失败,程序将遇到HttpException或IOException,其中IOException一般意味着网络出错,继续尝试也不太可能获得成功。服务器返回的应答可以按照多种方式读取,例如作为一个字节数组,作为一个输入流,或者作为一个String。获得服务器返回的应答后,我们就可以按照自己的需要任意处置它了。

          byte[] responseBody = method.getResponseBody();

释放连接

         method.releaseConnection();

以上只是非常简单地介绍了一下HttpClient库,HttpClient实际的功能要比本文介绍的丰富得多,不仅健壮而且高效,请参阅API文档了解详情。

参考资料

       HttpClient教程      http://ralf-realman.iteye.com/?page=3&show_full=true

补充

其实模拟浏览器的功能,好多多可以做到,HttpClient是比较底层的一种实现,可以考虑使用JWebUnit,它提供了对Js和vbs脚本的支持.

原创粉丝点击