您的位置:首页 > 产品设计 > UI/UE

HttpClient封装成常规请求方法 get post 支持key-value和json 格式传参

2019-01-19 17:32 633 查看
[code]/**
* @Description Http|Https 请求工具类
* @Author blake
* @Date 2018/12/12 下午4:33
* @Version 1.0
*/
public class HttpUtils {

private static PoolingHttpClientConnectionManager connMgr;
private static RequestConfig requestConfig;
private static final int MAX_TIMEOUT = 7000;

static {

// 设置连接池
connMgr = new PoolingHttpClientConnectionManager();

// 设置连接池大小
connMgr.setMaxTotal(100);
connMgr.setDefaultMaxPerRoute(connMgr.getMaxTotal());

RequestConfig.Builder configBuilder = RequestConfig.custom();

// 设置连接超时
configBuilder.setConnectTimeout(MAX_TIMEOUT);

// 设置读取超时
configBuilder.setSocketTimeout(MAX_TIMEOUT);

// 设置从连接池获取连接实例的超时
configBuilder.setConnectionRequestTimeout(MAX_TIMEOUT);

// 在提交请求之前 测试连接是否可用
connMgr.setValidateAfterInactivity(5000);
// configBuilder.setStaleConnectionCheckEnabled(true);

requestConfig = configBuilder.build();
}

/**
* 发送 GET 请求(HTTP),不带参数
*
* @param url
* @return
*/
public static String doGet(String url) {
return doGet(url, new HashMap<>());
}

/**
* 发送 GET 请求(HTTP),传入参数为 Key-Value 形式
*
* @param url
* @param params
* @return
*/
public static String doGet(String url, Map<String, Object> params) {
String apiUrl = url;
StringBuffer param = new StringBuffer();
int i = 0;
for (String key : params.keySet()) {
if (i == 0)
param.append("?");
else
param.append("&");
param.append(key).append("=").append(params.get(key));
i++;
}
apiUrl += param;
String result = null;
HttpClient httpclient = HttpClientBuilder.create().build();
try {
HttpGet httpPost = new HttpGet(apiUrl);
HttpResponse response = httpclient.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();

System.out.println("执行状态码 : " + statusCode);

HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream inStream = entity.getContent();
result = IOUtils.toString(inStream, "UTF-8");
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}

/**
* 发送 POST 请求(HTTP),不带参数
*
* @param apiUrl
* @return
*/
public static String doPost(String apiUrl) {
return doPost(apiUrl, new HashMap<>());
}

/**
* 发送 POST 请求(HTTP),参数为 Key-Value 形式
*
* @param apiUrl API接口URL
* @param params 参数map
* @return
*/
public static String doPost(String apiUrl, Map<String, Object> params) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse response = null;

try {
httpPost.setConfig(requestConfig);
List<NameValuePair> pairList = new ArrayList<>(params.size());
for (Map.Entry<String, Object> entry : params.entrySet()) {
NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry
.getValue().toString());
pairList.add(pair);
}
httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName("UTF-8")));
response = httpClient.execute(httpPost);
System.out.println(response.toString());
HttpEntity entity = response.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (response != null) {
try {
EntityUtils.consume(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return httpStr;
}

/**
* 发送 POST 请求(HTTP),参数为JSON形式
*
* @param apiUrl
* @param json   json对象
* @return
*/
public static String doPost(String apiUrl, Object json) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse response = null;

try {
httpPost.setConfig(requestConfig);
StringEntity stringEntity = new StringEntity(json.toString(), "UTF-8");
stringEntity.setContentEncoding("UTF-8");
stringEntity.setContentType("application/json");
httpPost.setEntity(stringEntity);
response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
System.out.println(response.getStatusLine().getStatusCode());
httpStr = EntityUtils.toString(entity, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (response != null) {
try {
EntityUtils.consume(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return httpStr;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: