欢迎来到天天文库
浏览记录
ID:37410569
大小:50.00 KB
页数:8页
时间:2019-05-23
《httpclient及有关jar包详解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实用文案HttpClient及有关jar包详解1.HttpClient简介 HttpClient是ApacheJakartaCommon下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。本文首先介绍HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。HTTP协议可能是现在Internet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。虽然在JDK的java.net包中已经提供了访问HTTP协议的基
2、本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。HttpClient是ApacheJakartaCommon下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如ApacheJakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。现在HttpClient最新版本为HttpClient4.0-beta22.HttpClient功能介绍 以下列出的是HttpCl
3、ient提供的主要的功能,要知道更多详细的功能可以参见HttpClient的主页。 (1)实现了所有HTTP的方法(GET,POST,PUT,HEAD等) (2)支持自动转向 (3)支持HTTPS协议 (4)支持代理服务器等3.HttpClient基本功能的使用 (1)GET方法 使用HttpClient需要以下6个步骤: 1.创建HttpClient的实例 2.创建某种连接方法的实例,在这里是GetMethod。在GetMethod的构造函数中传入待连接的地址 3.调用第一步中创建好的实例的execute方法来执行第二步中创
4、建好的method实例标准文档实用文案 4.读response 5.释放连接。无论执行方法是否成功,都必须释放连接 6.对得到后的内容进行处理 根据以上步骤,我们来编写用GET方法来取得某网页内容的代码。 大部分情况下HttpClient默认的构造函数已经足够使用。HttpClienthttpClient=newHttpClient(); 创建GET方法的实例。在GET方法的构造函数中传入待连接的地址即可。用GetMethod将会自动处理转发过程,如果想要把自动处理转发过程去掉的话,可以调用方法setFollowRedirects(
5、false)。GetMethodgetMethod=newGetMethod("....."); 调用实例httpClient的executeMethod方法来执行getMethod。由于是执行在网络上的程序,在运行executeMethod方法的时候,需要处理两个异常,分别是HttpException和IOException。引起第一种异常的原因主要可能是在构造getMethod的时候传入的协议不对,比如不小心将"http"写成"htp",或者服务器端返回的内容不正常等,并且该异常发生是不可恢复的;第二种异常一般是由于网络原因引起的异常,对
6、于这种异常(IOException),HttpClient会根据你指定的恢复策略自动试着重新执行executeMethod方法。HttpClient的恢复策略可以自定义(通过实现接口HttpMethodRetryHandler来实现)。通过httpClient的方法setParameter设置你实现的恢复策略,本文中使用的是系统提供的默认恢复策略,该策略在碰到第二类异常的时候将自动重试3次。executeMethod返回值是一个整数,表示了执行该方法后服务器返回的状态码,该状态码能表示出该方法执行是否成功、需要认证或者页面发生了跳转(默认状态下
7、GetMethod的实例是自动处理跳转的)等。//设置成了默认的恢复策略,在发生异常时候将自动重试3次,在这里你也可以设置成自定义的恢复策略 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, newDefaultHttpMethodRetryHandler()); //执行getMethod intstatusCode=client.executeMethod(getMethod); if(statusCode!=HttpStatus.SC_OK){
8、 System.err.println("Methodfailed:"+getMethod.getStatusLine()); }标准文档实用文案
此文档下载收益归作者所有