1. 程式人生 > >常用工具類--HttpClient常用請求(Post/Get)

常用工具類--HttpClient常用請求(Post/Get)

HttpClient請求獲取資料

 引入相應的包

import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

 Get方式請求:

public static String doGet(String url, Map<String, String> param) {
	// 建立Httpclient物件
	CloseableHttpClient httpclient = HttpClients.createDefault();

	String resultString = "";
	CloseableHttpResponse response = null;
	try {
		// 建立uri
		URIBuilder builder = new URIBuilder(url);
		if (param != null) {
			for (String key : param.keySet()) {
				builder.addParameter(key, param.get(key));
			}
		}
		URI uri = builder.build();
		// 建立http GET請求
		HttpGet httpGet = new HttpGet(uri);

		// 執行請求
		response = httpclient.execute(httpGet);
		// 判斷返回狀態是否為200
		if (response.getStatusLine().getStatusCode() == 200) {
			resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
		}
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (response != null) {
				response.close();
			}
			httpclient.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	return resultString;
}

 無引數get方式呼叫

public static String doGet(String url) {
	return doGet(url, null);
}
  java程式碼中使用: 
  String resultJson =  HttpClientUtil.doGet(READ_BASE_OPENID_URL + params);

 Post方式請求

public static String doPost(String url, Map<String, String> param) {
	// 建立Httpclient物件
	CloseableHttpClient httpClient = HttpClients.createDefault();
	CloseableHttpResponse response = null;
	String resultString = "";
	try {
		// 建立Http Post請求
		HttpPost httpPost = new HttpPost(url);
		// 建立引數列表
		if (param != null) {
			List<NameValuePair> paramList = new ArrayList<>();
			for (String key : param.keySet()) {
				paramList.add(new BasicNameValuePair(key, param.get(key)));
			}
			// 模擬表單
			UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
			httpPost.setEntity(entity);
		}
		// 執行http請求
		response = httpClient.execute(httpPost);
		resultString = EntityUtils.toString(response.getEntity(), "utf-8");
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			response.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	return resultString;
}

 無引數Post方法

public static String doPost(String url) {
	return doPost(url, null);
}

java程式碼中呼叫
String resultJson =  HttpClientUtil.doPost(READ_BASE_OPENID_URL + params);

 以Json方式返回資料傳遞引數並返回結果

public static String doPostJson(String url, String json)  throws Exception {
	// 建立Httpclient物件
	CloseableHttpClient httpClient = HttpClients.createDefault();
		CloseableHttpResponse response = null;
		String resultString = "";
		try {
			// 建立Http Post請求
			HttpPost httpPost = new HttpPost(url);
			// 建立請求內容
			StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
			httpPost.setEntity(entity);
			// 執行http請求
			response = httpClient.execute(httpPost);
			resultString = EntityUtils.toString(response.getEntity(), "utf-8");
		} catch (Exception e) {
			//e.printStackTrace();
			throw e;
		} finally {
			try {
				response.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
	}

	return resultString;
}