httpClient4請求工具類實現
package com.http;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class HttpClientUtil {
private static final String ENCODE = "UTF-8"; private static final Logger LOGGER = LoggerFactory.getLogger(HttpClientUtil.class); public static final Integer CONNECTION_TIMEOUT = 5000; public static final Integer SO_TIMEOUT = 5000; /** * get請求,引數拼接好 * @Description TODO(描述) * @Author wangymd * @Date 2021-10-22 20:10:04 * @param url * @return * */ public static String get(String url) { try { HttpClient httpClient = new DefaultHttpClient(); httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT); httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT); HttpGet httpGet = new HttpGet(url); HttpResponse response = httpClient.execute(httpGet); if (null == response.getStatusLine() || 200 != response.getStatusLine().getStatusCode()) { return null; } HttpEntity entity = response.getEntity(); return EntityUtils.toString(entity, ENCODE); } catch (Exception e) { LOGGER.error("get request error url:{}, e:{}",url, e); } return null; } /** * get請求url不帶? * @Description TODO(描述) * @Author wangymd * @Date 2021-10-22 20:09:34 * @param url * @param params * @return * */ public static String get(String url, List<NameValuePair> params) { try { HttpClient httpClient = new DefaultHttpClient(); httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT); httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT); HttpGet httpGet = new HttpGet(url); //引數設定 if(CollectionUtils.isNotEmpty(params)) { String paramStr = EntityUtils.toString(new UrlEncodedFormEntity(params)); httpGet.setURI(new URI(httpGet.getURI().toString() + "?" + paramStr)); } HttpResponse response = httpClient.execute(httpGet); if (null == response.getStatusLine() || 200 != response.getStatusLine().getStatusCode()) { return null; } HttpEntity entity = response.getEntity(); return EntityUtils.toString(entity, ENCODE); } catch (Exception e) { LOGGER.error("get request error url:{}, timeout:{}, e:{}",url, JSON.toJSONString(params), e); } return null; } /** * post請求json引數 * @Description TODO(描述) * @Author wangymd * @Date 2021-10-22 20:06:20 * @param url * @param params * @return * */ public static String post(String url, List<NameValuePair> params) { try { HttpClient httpClient = new DefaultHttpClient(); httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT); httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT); HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Content-type", "application/json;charset=utf-8"); httpPost.setHeader("Connection", "Close"); //引數設定 JSONObject jsonObject = new JSONObject(); if(CollectionUtils.isNotEmpty(params)) { for (NameValuePair nameValuePair : params) { jsonObject.put(nameValuePair.getName(), nameValuePair.getValue()); } } StringEntity stringEntity = new StringEntity(jsonObject.toJSONString()); stringEntity.setContentType("application/json"); stringEntity.setContentEncoding(ENCODE); httpPost.setEntity(stringEntity); HttpResponse response = httpClient.execute(httpPost); if (null == response.getStatusLine() || 200 != response.getStatusLine().getStatusCode()) { return null; } HttpEntity entity = response.getEntity(); return EntityUtils.toString(entity, ENCODE); } catch (Exception e) { LOGGER.error("post request error url:{}, timeout:{}, e:{}",url, JSON.toJSONString(params), e); } return null; } /** * 測試 * @Description TODO(描述) * @Author wangymd * @Date 2021-10-20 11:17:26 * @param args * @throws Exception * */ public static void main(String[] args) throws Exception { String accesstoken = "xxxxxx"; List<NameValuePair> nvps = new ArrayList <NameValuePair>(); nvps.add(new BasicNameValuePair("p1", "p1")); nvps.add(new BasicNameValuePair("p2", "p2")); String result = HttpClientUtil.post("https://api.weixin.qq.com/mmec/api/XXXX?access_token=" + accesstoken, nvps); System.out.println(result); }
}