HttpClient的简单使用

    因为项目的原因,使用到了HttpClient这个Apache又一个好用的包,这里就简单的介绍下它的使用吧。

    使用场景

            因为项目中有一功能是需要和另一个系统进行数据交换的,一开始就考虑采用HttpUrlConnection连接远程地址,发送流实现数据交换。后来发现了HttpClient,也就赖的再写一些连接的函数了,所以就“拿来主义”了!

    安装:

            HttpClient的使用需要三个包,分别是commons-httpclient-3.1.jar、commons-logging-1.0.4.jar、commons-codec-1.3.jar,都可以在Apache的官网上下载。

    使用:

            我们知道,HTTP协议的连接方法有GET、POST、PUT和HEAD方式,在创建Method实例的时候可以更具具体的方法来创建。HttpClient的使用一般分如下几步:

            1、创建HttpClient实例。

            2、创建具体连接方法的实例。如POST方法创建PostMethod的实例,在实例化时从构造函数中传入待连接的URL地址。

            3、对post的发送内容等信息进行配置

            4、执行HttpClient的execute方法

            5、如果返回的状态码正常,表明连接成功,可以读取response的内容

  1. //将创建的xml生成String类型等待发送
  2. String strxml = CreateXML.creteCustomerXml(list);
  3. //创建post发法的实例
  4.         PostMethod post = new PostMethod(
  5.             "http://127.0.0.1:8088/CustomerReceive");
  6.         // 使用系统提供的默认的恢复策略
  7.         post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
  8.                 new DefaultHttpMethodRetryHandler());
  9. //设置发送的内容       
  10. post.setRequestBody(strxml);
  11. //对发送的内容长度进行设定
  12.         if (strxml.length() < Integer.MAX_VALUE) {
  13.             post.setRequestContentLength(strxml.length());
  14.         }
  15.         else {
  16.             post
  17.                     .setRequestContentLength(EntityEnclosingMethod.CONTENT_LENGTH_CHUNKED);
  18.         }
  19.         // 指定请求内容的类型
  20.         post.setRequestHeader("Content-type""text/xml; charset=utf-8");
  21. //创建HttpClient 实例
  22.         HttpClient httpclient = new HttpClient();
  23.         int result;
  24.         try {
  25. //执行post方法
  26.             result = httpclient.executeMethod(post);
  27. //如果连接正常,获得返回内容         
  28.             if (result == HttpStatus.SC_OK) {
  29.                 InputStream input = post.getResponseBodyAsStream();
  30.                 SAXReader readers = new SAXReader();
  31.                 try {
  32.                     Document document = readers.read(input);
  33.                     System.out.println(document.asXML());
  34.                 } catch (DocumentException e) {
  35.                     // TODO Auto-generated catch block
  36.                     e.printStackTrace();
  37.                 }
  38.             }
  39.         } catch (HttpException e) {
  40.             // TODO Auto-generated catch block
  41.             e.printStackTrace();
  42.         } catch (IOException e) {
  43.             // TODO Auto-generated catch block
  44.             e.printStackTrace();
  45.         } finally {
  46.             post.releaseConnection();
  47.         }
  48.     }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值