httpclient的get和post请求

来源:互联网 发布:微信数据如何移到sd卡 编辑:程序博客网 时间:2024/05/16 16:07

httpclient maven主要依赖:

<dependency>    <groupId>org.apache.httpcomponents</groupId>    <artifactId>httpclient</artifactId>    <version>4.5.2</version></dependency>


封装的工具类:

package com.cbj.util;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.net.URISyntaxException;import java.util.ArrayList;import java.util.Map;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;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.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;public class HttpClientUtils {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 */private static CloseableHttpClient getHttpClient() {init();return HttpClients.custom().setConnectionManager(cm).build();}/** *  * @param url * @return */public static String httpGetRequest(String url) {HttpGet httpGet = new HttpGet(url);return getResult(httpGet);}public static String httpGetRequest(String url, Map<String, Object> params) throws URISyntaxException {URIBuilder ub = new URIBuilder();ub.setPath(url);ArrayList<NameValuePair> pairs = covertParams2NVPS(params);ub.setParameters(pairs);HttpGet httpGet = new HttpGet(ub.build());return getResult(httpGet);}public static String httpGetRequest(String url, Map<String, Object> headers, Map<String, Object> params)throws URISyntaxException {URIBuilder ub = new URIBuilder();ub.setPath(url);if(params != null) {ArrayList<NameValuePair> pairs = covertParams2NVPS(params);ub.setParameters(pairs);}HttpGet httpGet = new HttpGet(ub.build());if (headers != null) {for (Map.Entry<String, Object> 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<String, Object> params) throws UnsupportedEncodingException {HttpPost httpPost = new HttpPost(url);ArrayList<NameValuePair> pairs = covertParams2NVPS(params);httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));return getResult(httpPost);}public static String httpPostRequest(String url, Map<String, Object> headers, Map<String, Object> params)throws UnsupportedEncodingException {HttpPost httpPost = new HttpPost(url);if(headers != null) {for (Map.Entry<String, Object> param : headers.entrySet()) {httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));}}if(params != null) {ArrayList<NameValuePair> pairs = covertParams2NVPS(params);httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));}return getResult(httpPost);}private static ArrayList<NameValuePair> covertParams2NVPS(Map<String, Object> params) {ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();for (Map.Entry<String, Object> param : params.entrySet()) {pairs.add(new BasicNameValuePair(param.getKey(), String.valueOf(param.getValue())));}return pairs;}/** * 处理Http请求 *  * @param request * @return */private static String getResult(HttpRequestBase request) {// 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();System.out.println(result);return result;}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {}return EMPTY_STR;}}


1 0
原创粉丝点击