Apache HttpClient 4.3开发指南

一、概述

Apache HttpClient 4系列已经发布很久了,但由于它与HttpClient 3.x版本完全不兼容,以至于业内采用此库的公司较少,在互联网上也少有相关的文档资料分享。

本文旨在写一个简要的Apache HttpClient 4.3开发指南,帮助开发者快速上手Apache HttpClient 4.3.x库。

要注意的是,本文档中的代码在低于HttpClient 4.3版本的地方可能不能运行。

二、开发手册
1、创建HTTP客户端
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    CloseableHttpClient client = HttpClientBuilder.create().build();  


2、发送基本的GET请求
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    instance.execute(new HttpGet(“http://www.baidu.com”));  


3、获取HTTP响应的状态码
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    String url = “http://www.baidu.com”;  
    CloseableHttpResponse response = instance.execute(new HttpGet(url));  
    assertThat(response.getStatusLine().getStatusCode(), equalTo(200));  


4、获取响应的媒体类型
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    String url = “http://www.baidu.com”;  
    CloseableHttpResponse response = instance.execute(new HttpGet(url));  
    String contentMimeType = ContentType.getOrDefault(response.getEntity()).getMimeType();  
    assertThat(contentMimeType, equalTo(ContentType.TEXT_HTML.getMimeType()));  


5、获取响应的BODY部分
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    String url = “http://www.baidu.com”;  
    CloseableHttpResponse response = instance.execute(new HttpGet(url));  
    String bodyAsString = EntityUtils.toString(response.getEntity());  
    assertThat(bodyAsString, notNullValue());  


6、配置请求的超时设置
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    @Test(expected=SocketTimeoutException.class)  
    public void givenLowTimeout_whenExecutingRequestWithTimeout_thenException() throws ClientProtocolException, IOException{  
        RequestConfig requestConfig = RequestConfig.custom()  
        .setConnectionRequestTimeout(50).setConnectTimeout(50)  
        .setSocketTimeout(50).build();  
        HttpGet request = new HttpGet(SAMPLE_URL);  
        request.setConfig(requestConfig);  
        instance.execute(request);  
    }  


7、发送POST请求
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    instance.execute(new HttpPost(SAMPLE_URL));  


8、为HTTP请求配置重定向
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    CloseableHttpClient instance = HttpClientBuilder.create().disableRedirectHandling().build();  
    CloseableHttpResponse response = instance.execute(new HttpGet(SAMPLE_URL));  
    assertThat(reponse.getStatusLine().getStatusCode(), equalTo(301));  


9、配置请求的HEADER部分
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    HttpGet request = new HttpGet(SAMPLE_URL);  
    request.addHeader(HttpHeaders.ACCEPT, “application/xml”);  
    response = instance.execute(request);  


10、获取响应的HEADER部分
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    CloseableHttpResponse response = instance.execute(new HttpGet(SAMPLE_URL));  
    Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE);  
    assertThat(headers, not(emptyArray()));  


11、关闭或释放资源
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    response = instance.execute(new HttpGet(SAMPLE_URL));  
    try{  
      HttpEntity entity = response.getEntity();  
      if(entity!=null){  
    InputStream instream = entity.getContent();  
    instream.close();  
      }  
    } finally{  
      response.close();  
    } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值