httpClientUtil工具類,簡單,好用
阿新 • • 發佈:2019-02-11
1.引出httpClientmaven依賴
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
</dependency>
2.引入HttpDeleteWithBody類
package com.company.project.core; import java.net.URI; import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; public class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase{ public static final String METHOD_NAME = "DELETE"; public HttpDeleteWithBody() { } public HttpDeleteWithBody(URI uri) { setURI(uri); } public HttpDeleteWithBody(String uri) { setURI(URI.create(uri)); } public String getMethod() { return METHOD_NAME; } }
3. 引入httpClientUtil類
package com.company.project.util; import java.nio.charset.Charset; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.company.project.core.HttpDeleteWithBody; import com.company.project.core.ServiceException; public class HttpClientUtil { private static final Logger LOGGER = LoggerFactory.getLogger(HttpClientUtil.class); private static final HttpClient client = HttpClients.createDefault(); /** * post請求 * @param post post * @param paramStr json格式的請求體資料 * @return 響應的資料(json) */ public static String post(HttpPost post,String paramStr,String cookie){ String data=""; post.addHeader("Content-type","application/json; charset=utf-8"); post.setHeader("Accept", "application/json"); if(StringUtils.isNotEmpty(paramStr)) { post.setEntity(new StringEntity(paramStr, Charset.forName("UTF-8"))); } if (StringUtils.isNotEmpty(cookie)) { post.setHeader("Cookie", cookie); } try { HttpResponse resp = client.execute(post); //獲取HTTP狀態碼 int statusCode = resp.getStatusLine().getStatusCode(); if(statusCode!=200){ throw new ServiceException("網路錯誤,狀態碼:"+statusCode); } HttpEntity httpEntity = resp.getEntity(); data = EntityUtils.toString(httpEntity, "UTF-8"); } catch (Exception e) { LOGGER.error("post獲取資料異常",e); }finally { post.releaseConnection(); } return data; } /** * put請求 * @param put put * @param paramStr json格式的請求體資料 * @return 響應的資料(json) */ public static String put(HttpPut put,String paramStr,String cookie){ String data=""; put.addHeader("Content-type","application/json; charset=utf-8"); put.setHeader("Accept", "application/json"); if (StringUtils.isNotEmpty(cookie)) { put.setHeader("Cookie", cookie); } put.setEntity(new StringEntity(paramStr, Charset.forName("UTF-8"))); try { HttpResponse resp = client.execute(put); //獲取HTTP狀態碼 int statusCode = resp.getStatusLine().getStatusCode(); if(statusCode!=200){ throw new ServiceException("網路錯誤,狀態碼:"+statusCode); } HttpEntity httpEntity = resp.getEntity(); data = EntityUtils.toString(httpEntity, "UTF-8"); } catch (Exception e) { LOGGER.error("put獲取資料異常",e); }finally { put.releaseConnection(); } return data; } /** * get請求 * @param get get * @return 響應的資料(json) */ public static String get(HttpGet get,String cookie){ String data=""; get.addHeader("Content-type","application/json; charset=utf-8"); get.setHeader("Accept", "application/json"); if (StringUtils.isNotEmpty(cookie)) { get.setHeader("Cookie", cookie); } try { HttpResponse resp = client.execute(get); //獲取HTTP狀態碼 int statusCode = resp.getStatusLine().getStatusCode(); if(statusCode!=200){ throw new ServiceException("網路錯誤,狀態碼:"+statusCode); } HttpEntity httpEntity = resp.getEntity(); data = EntityUtils.toString(httpEntity, "UTF-8"); } catch (Exception e) { LOGGER.error("get獲取資料異常",e); }finally { get.releaseConnection(); } return data; } /** * delete請求 * @param delete delete * @return 響應的資料(json) */ public static String delete(HttpDelete delete,String cookie){ String data=""; delete.addHeader("Content-type","application/json; charset=utf-8"); delete.setHeader("Accept", "application/json"); if (StringUtils.isNotEmpty(cookie)) { delete.setHeader("Cookie", cookie); } try { HttpResponse resp = client.execute(delete); //獲取HTTP狀態碼 int statusCode = resp.getStatusLine().getStatusCode(); if(statusCode!=200){ throw new ServiceException("網路錯誤,狀態碼:"+statusCode); } HttpEntity httpEntity = resp.getEntity(); data = EntityUtils.toString(httpEntity, "UTF-8"); } catch (Exception e) { LOGGER.error("get獲取資料異常",e); }finally { delete.releaseConnection(); } return data; } /** * delete請求 * @param delete * @param paramStr json格式的請求體資料 * @return */ public static String delete(HttpDeleteWithBody delete,String paramStr,String cookie){ String data=""; delete.addHeader("Content-type","application/json; charset=utf-8"); delete.setHeader("Accept", "application/json"); if (StringUtils.isNotEmpty(cookie)) { delete.setHeader("Cookie", cookie); } delete.setEntity(new StringEntity(paramStr, Charset.forName("UTF-8"))); try { HttpResponse resp = client.execute(delete); //獲取HTTP狀態碼 int statusCode = resp.getStatusLine().getStatusCode(); if(statusCode!=200){ throw new ServiceException("網路錯誤,狀態碼:"+statusCode); } HttpEntity httpEntity = resp.getEntity(); data = EntityUtils.toString(httpEntity, "UTF-8"); } catch (Exception e) { LOGGER.error("delete獲取資料異常",e); }finally { delete.releaseConnection(); } return data; } }