1. 程式人生 > >Apache HttpClient 4 3開發指南

Apache HttpClient 4 3開發指南

               

《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(“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所有常見的需求,供開發者參考。