1. 程式人生 > >httpClientUtil工具類,簡單,好用

httpClientUtil工具類,簡單,好用

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;
	}
}