HttpUtils 发送http请求工具类(实例讲解)

网友投稿 527 2023-04-28


HttpUtils 发送http请求工具类(实例讲解)

废话不多说,直接上代码

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.net.URISyntaxException;

import java.util.ArrayList;

import java.util.Map;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.http.HttpEntity;

import org.apache.http.NameValuePair;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.config.RequestConfig;

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.methods.HttpRequestBase;

import org.apache.http.client.utils.URIBuilder;

import org.apache.http.entity.StringEntity;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

import com.pingan.qhcs.map.audit.constant.CodeConstant;

import com.pingan.qhcs.map.audit.exception.MapException;

public class HttpClientUtil {

protected static Log logger = LogFactory.getLog(HttpClientUtil.class);

private static PoolingHttpClientConnectionManager cm;

private static String EMPTY_STR = "";

private static String UTF_8 = "UTF-8";

private static void init() {

if (cm == null) {

cm = new PoolingHttpClientConnectionManager();

cm.setMaxTotal(50);// 整个连接池最大连接数

cm.setDefaultMaxPerRoute(5);// 每路由最大连接数,默认值是2

}

}

/**

* 通过连接池获取HttpClient

*

* @return

*/

public static CloseableHttpClient getHttpClient() {

init();

return HttpClients.custom().setConnectionManager(cm).build();

}

public static String httpGetRequest(String url) {

HttpGet httpGet = new HttpGet(url);

return getResult(httpGet);

}

public static String httpGetRequest(String url, Map params) throws URISyntaxException {

URIBuilder ub = new URIBuilder();

ub.setPath(url);

ArrayList pairs = covertParams2NVPS(params);

ub.setParameters(pairs);

HttpGet httpGet = new HttpGet(ub.build());

return getResult(httpGet);

}

public static String httpGetRequest(String url, Map headers, Map params)

throws URISyntaxException {

URIBuilder ub = new URIBuilder();

ub.setPath(url);

ArrayList pairs = covertParams2NVPS(params);

ub.setParameters(pairs);

HttpGet httpGet = new HttpGet(ub.build());

for (Map.Entry param : headers.entrySet()) {

httpGet.addHeader(param.getKey(), String.valueOf(param.getValue()));

}

return getResult(httpGet);

}

public static String httpPostRequest(String url) {

HttpPost httpPost = new HttpPost(url);

return getResult(httpPost);

}

public static String httpPostRequest(String url, Map params) throws UnsupportedEncodingException {

HttpPost httpPost = new HttpPost(url);

ArrayList pairs = covertParams2NVPS(params);

httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));

return getResult(httpPost);

}

public static String httpPostRequest(String url, Map headers, Map params)

throws UnsupportedEncodingException {

HttpPost httpPost = new HttpPost(url);

for (Map.Entry param : headers.entrySet()) {

httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));

}

ArrayList pairs = covertParams2NVPS(params);

httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));

return getResult(httpPost);

}

public static String httpPostRequest(String url, Map headers, String strBody)

throws Exception {

HttpPost httpPost = new HttpPost(url);

for (Map.Entry param : headers.entrySet()) {

httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));

}

httpPost.setEntity(new StringEntity(strBody, UTF_8));

return getResult(httpPost);

}

private static ArrayList covertParams2NVPS(Map params) {

ArrayList pairs = new ArrayList();

for (Map.Entry param : params.entrySet()) {

pairs.add(new BasicNameValuePair(param.getKey(), String.valueOf(param.getValue())));

}

return pairs;

}

/**

* 处理Http请求

*

* setConnectTimeout:设置连接超时时间,单位毫秒。

* setConnectionRequestTimeout:设置从connect Manager获取Connection 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。

* setSocketTimeout:请求获取数据的超时时间,单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。

*

* @param request

* @return

*/

private static String getResult(HttpRequestBase request) {

RequestConfig requestConfig = RequestConfig.custom().sethttp://ConnectTimeout(60000)

.setConnectionRequestTimeout(5000).setSocketTimeout(60000).build();

request.setConfig(requestConfig);// 设置请求和传输超时时间

// CloseableHttpClient httpClient = HttpClients.createDefault();

CloseableHttpClient httpClient = getHttpClient();

try {

CloseableHttpResponse response = httpClient.execute(request); //执行请求

// response.getStatusLine().getStatusCode();

HttpEntity entity = response.getEntity();

if (entity != null) {

// long len = entity.getContentLength();// -1 表示长度未知

String result = EntityUtils.toString(entity);

response.close();

// httpClient.close();

return result;

}

} catch (ClientProtocolException e) {

logger.error("[maperror] HttpClientUtil ClientProtocolException : " + e.getMessage());

throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil ClientProtocolException :" + e.getMessage());

} catch (IOException e) {

logger.error("[maperror] HttpClientUtil IOException : " + e.getMessage());

throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil IOException :" + e.getMessage());

} finally {

}

return EMPTY_STR;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Angular如何引入第三方库的方法详解
下一篇:mock工具图片(mock工具类)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~