版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/16854747
《Apache HttpClient 4.3開發指南》
作者:chszs,轉載需注明。部落格首頁:
http://blog.csdn.net/chszs一、概述
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(“http://www.baidu.com”));
3、擷取HTTP響應的狀态碼
String url = “http://www.baidu.com”;
CloseableHttpResponse response = instance.execute(new HttpGet(url));
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
4、擷取響應的媒體類型
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部分
String url = “http://www.baidu.com”;
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所有常見的需求,供開發者參考。