Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7173241
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: Java

2013-11-23 09:15:57

《Apache HttpClient 4.3开发指南》

一、概述
Apache HttpClient 4系列已经发布很久了,但由于它与HttpClient 3.x版本完全不兼容,以至于业内采用此库的公司较少,在互联网上也少有相关的文档资料分享。
本文旨在写一个简要的Apache HttpClient 4.3开发指南,帮助开发者快速上手Apache HttpClient 4.3.x库。
要注意的是,本文档中的代码在低于HttpClient 4.3版本的地方可能不能运行。

二、开发手册
1、创建HTTP客户端
CloseableHttpClient client = HttpClientBuilder.create().build();

2、发送基本的GET请求
instance.execute(new HttpGet(“”));

3、获取HTTP响应的状态码
String url = “”;
CloseableHttpResponse response = instance.execute(new HttpGet(url));
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));

4、获取响应的媒体类型
String url = “”;
CloseableHttpResponse response = instance.execute(new HttpGet(url));
String contentMimeType = ContentType.getOrDefault(response.getEntity()).getMimeType();
assertThat(contentMimeType, equalTo(ContentType.TEXT_HTML.getMimeType()));

5、获取响应的BODY部分
String url = “”;
CloseableHttpResponse response = instance.execute(new HttpGet(url));
String bodyAsString = EntityUtils.toString(response.getEntity());
assertThat(bodyAsString, notNullValue());

6、配置请求的超时设置
@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请求
instance.execute(new HttpPost(SAMPLE_URL));

8、为HTTP请求配置重定向
CloseableHttpClient instance = HttpClientBuilder.create().disableRedirectHandling().build();
CloseableHttpResponse response = instance.execute(new HttpGet(SAMPLE_URL));
assertThat(reponse.getStatusLine().getStatusCode(), equalTo(301));

9、配置请求的HEADER部分
HttpGet request = new HttpGet(SAMPLE_URL);
request.addHeader(HttpHeaders.ACCEPT, “application/xml”);
response = instance.execute(request);

10、获取响应的HEADER部分
CloseableHttpResponse response = instance.execute(new HttpGet(SAMPLE_URL));
Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE);
assertThat(headers, not(emptyArray()));

11、关闭或释放资源
response = instance.execute(new HttpGet(SAMPLE_URL));
try{
  HttpEntity entity = response.getEntity();
  if(entity!=null){
    InputStream instream = entity.getContent();
    instream.close();
  }
} finally{
  response.close();
}

以上内容涵盖了HttpClient 4.3所有常见的需求,供开发者参考。




阅读(325) | 评论(0) | 转发(0) |
0

上一篇:Linux常见疑难问答

下一篇:shell变量笔记

给主人留下些什么吧!~~