aHttpClient4.1Tutorial利用官方例子讲解httpClient4.1的用法HttpClient是ApacheJakartaCommon下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。本文利用官方例子来介绍HttpClient的用法。wanghe2011-3-14目录HttpClient简介......................................................................................................................41)百科名片:...................................................................................................................42)HttpClient的范围..................................................................................................43)httpClient特性.......................................................................................................4HttpClient基本功能的使用..................................................................................................6a)环境准备........................................................................................................................6b)几个主要类解释........................................................................................................6c)第一个程序....................................................................................................................6d)如何传递参数............................................................................................................8e)模拟表单登录..............................................................................................................10f)HttpClient连接SSL.................................................................................................121)生成KeyStore........................................................................................................122)配置tomcat服务器支持SSL...............................................................................133)用浏览器访问你的应用..........................................................................................154)用httpClient访问https......................................................................................15教程版本说明作者0.9第一个版本.仅简单的几个例子和SSL访问wangheHttpClient简介1)百科名片:HTTP协议可能是现在Internet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。虽然在JDK的javanet包中已经提供了访问HTTP协议的基本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。HttpClient是ApacheJakartaCommon下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如ApacheJakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。现在HttpClient最新版本为HttpClient4.1.2)HttpClient的范围基于HttpCore的客户端HTTP运输实现库基于经典(阻塞)I/O内容无关3)httpClient特性基于标准,纯净的java语言.实现了Http1.0和Http1.1以可扩展的面向对象的结构实现了Http全部的方法(GET,POST,PUT,DELETE,HEAD,OPTIONS,andTRACE).支持HTTPS协议.通过Http代理建立透明的连接.利用CONNECT方法通过Http代理建立隧道的https连接.Basic,Digest,NTLMv1,NTLMv2,NTLM2Session,SNPNEGO/Kerberos认证方案.插件式的自定义认证方案.便携可靠的套接字工厂使它更容易的使用第三方解决方案.连接管理器支持多线程应用.支持设置最大连接数,同时支持设置每个主机的最大连接数.发现并关闭过期的连接.AutomaticCookiehandlingforreadingSet-Cookie:headersfromtheserverandsendingthembackoutinaCookie:headerwhenappropriate.插件式的自定义Cookie策略.Requestoutputstreamstoavoidbufferinganycontentbodybystreamingdirectlytothesockettotheserver.Responseinputstreamstoefficientlyreadtheresponsebodybystreamingdirectlyfromthesockettotheserver.在http1.0和http1.1中利用KeepAlive保持持久连接.直接获取服务器发送的responsecode和headers.设置连接超时的能力.实验性的支持http1.1responsecaching.源代码基于ApacheLicense可免费获取.HttpClient基本功能的使用a)环境准备从apache下载httpClient;下载地址:解压、将lib下的jar导入工程;b)几个主要类解释类名作用HttpClientHttpClient代表了一个http的客户端,HttpClient接口定义了大多数基本的http请求执行行为.HttpEntityentity是发送或者接收消息的载体。entities可以通过request和response获取到.HttpConnectionHttpConnection代表了一个http连接。c)第一个程序说明:用get方法访问://创建默认的httpClient实例.HttpClienthttpclient=newDefaultHttpClient();try{//创建httpget.HttpGethttpget=newHttpGet();System.out.println(executingrequest+httpget.getURI());//执行get请求.HttpResponseresponse=httpclient.execute(httpget);//获取响应实体HttpEntityentity=response.getEntity();System.out.println(--------------------------------------);//打印响应状态System.out.println(response.getStatusLine());if(entity!=null){//打印响应内容长度System.out.println(Responsecontentlength:+entity.getContentLength());//打印响应内容System.out.println(Responsecontent:+EntityUtils.toString(entity));}System.out.println(------------------------------------);}finally{//关闭连接,释放资源httpclient.getConnectionManager().shutdown();}输出:executingrequest:6759Responsecontent:!doctypehtmlhtmlheadmetahttp-equiv=Content-Typecontent=text/html;charset=gb2312title百度一下,你就知道/title…(此处省略打印信息)-----------------------------------------d)如何传递参数说明:用post方法访问本地应用并根据传递参数不同返回不同结果Code:Struts2配置:packagename=Ajaxextends=json-defaultnamespace=/Ajaxactionname=serivceJclass=com.wanghe.test.TestActionmethod=serivceJresulttype=json/result/action/packageActionCode:publicvoidserivceJ(){try{HttpServletResponseresponse=ServletActionContext.getResponse();HttpServletRequestrequest=ServletActionContext.getRequest();System.out.println(request...serivceJ);response.setCharacterEncoding(UTF-8);Stringtype=request.getParameter(type);Stringc=