HttpClient post 和get 带参数请求
来源:互联网 发布:扫码查真伪的软件 编辑:程序博客网 时间:2024/06/07 05:41
package com.spf.common.httpClientUtils;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;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.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicHeader;import org.apache.http.message.BasicNameValuePair;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;import org.apache.log4j.Logger;/** * @Author SPF * @Date 2017/5/25 */public class HttpClientUtils {private static String CHARSET = "UTF-8";protected static final String User_Agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36";protected static RequestConfig config;protected static PoolingHttpClientConnectionManager connManager;private static HttpClientUtils hcu = null;/** * 获取 HttpClientUtil 实例 * @return */public static HttpClientUtil getInstance() { if (hcu == null) { hcu = new HttpClientUtils (); } config = RequestConfig.custom() // .setProxy(new HttpHost("myotherproxy", 8080)) // .setSocketTimeout(10000) // .setConnectTimeout(10000) // .setConnectionRequestTimeout(30000).build(); SSLContextBuilder sslContextBuilder = new SSLContextBuilder(); try { sslContextBuilder.loadTrustMaterial(null, new TrustSelfSignedStrategy()); SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContextBuilder.build()); Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create() .register("https", socketFactory).register("http", new PlainConnectionSocketFactory()).build(); connManager = new PoolingHttpClientConnectionManager( // socketFactoryRegistry, null, null, null, 300L, TimeUnit.SECONDS); connManager.setMaxTotal(200); connManager.setDefaultMaxPerRoute(20); } catch (Exception e) { e.printStackTrace(); } return hcu;}/** * 获取连接 * @return */public CloseableHttpClient getConnect() { CloseableHttpClient client = HttpClients.custom() // .setDefaultCredentialsProvider(credentialsProvider) // //.setProxy(new HttpHost("182.129.248.215",4346)) .setDefaultRequestConfig(config).setConnectionManager(connManager).build(); return client;}/** * post 请求 * @param client 连接 * @param url 地址 * @param paramsMap 参数 * @param vars 需要接受的数据 Map * @param connectTimeoutMillSec 设置连接超时时间 * @param readTimeoutMillSec 设置读取超时时间 * @return * @throws Exception */public String post(CloseableHttpClient client, String url, Map<String, String> paramsMap, Map<String, Object> vars, int connectTimeoutMillSec, int readTimeoutMillSec) throws Exception { String responseText = ""; CloseableHttpResponse response = null; try { HttpPost method = new HttpPost(url); method.addHeader("User-Agent", User_Agent); if (vars.get("Referer") != null) { method.addHeader("Referer",String.valueOf(vars.remove("Referer"))); } if (connectTimeoutMillSec > 10000 && readTimeoutMillSec > 10000) { RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(connectTimeoutMillSec).setConnectTimeout(readTimeoutMillSec).build();// 设置请求和传输超时时间 method.setConfig(requestConfig); } if (paramsMap != null) { List<NameValuePair> paramList = new ArrayList<NameValuePair>(); for (Map.Entry<String, String> param : paramsMap.entrySet()) { NameValuePair pair = new BasicNameValuePair(param.getKey(), param.getValue()); paramList.add(pair); } method.setEntity(new UrlEncodedFormEntity(paramList, CHARSET)); } response = client.execute(method); HttpEntity entity = response.getEntity(); if (entity != null) { responseText = EntityUtils.toString(entity); } } catch (Exception e) { throw new Exception(e); } finally { try { response.close(); } catch (Exception e) { throw new Exception(e); } } vars.put("data", responseText); return responseText;}/** * get 请求 * @param client 连接 * @param url 地址 * @param vars 需要接受的数据 Map * @param connectTimeoutMillSec 设置连接超时时间 * @param readTimeoutMillSec 设置读取超时时间 * @return * @throws Exception */public String get( CloseableHttpClient client , String url, Map<String, Object> vars, int connectTimeoutMillSec, int readTimeoutMillSec) throws Exception { String responseText = ""; CloseableHttpResponse response = null; try { HttpGet httpGet = new HttpGet(url); httpGet.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"); if (vars.get("Referer") != null) { httpGet.addHeader("Referer",String.valueOf(vars.remove("Referer"))); } if (connectTimeoutMillSec > 10000 && readTimeoutMillSec > 10000) { RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(connectTimeoutMillSec).setConnectTimeout(readTimeoutMillSec).build();// 设置请求和传输超时时间 httpGet.setConfig(requestConfig); } response = client.execute(httpGet); HttpEntity entity = response.getEntity(); String charset = "UTF-8"; if (entity != null) { charset = getContentCharSet(entity); responseText = EntityUtils.toString(entity, charset); } } catch (Exception e) { throw new Exception(e); } finally { try { if (null != response) { response.close(); } } catch (Exception e) { e.printStackTrace(); } } vars.put("data",responseText); return responseText;}/** * 设置编码 * @param entity * @return * @throws org.apache.http.ParseException */public static String getContentCharSet(final HttpEntity entity) throws org.apache.http.ParseException { if (entity == null) { throw new IllegalArgumentException("HTTP entity may not be null"); } String charset = null; if (entity.getContentType() != null) { HeaderElement values[] = entity.getContentType().getElements(); if (values.length > 0) { NameValuePair param = values[0].getParameterByName("charset" ); if (param != null) { charset = param.getValue(); } } } if("".equals(charset) || null == charset){ charset = "UTF-8"; } return charset;}}
阅读全文
1 0
- HttpClient post 和get 带参数请求
- httpClient----Post 和 GET请求
- Httpclient post和get请求
- HttpClient用Post和Get带参数提交帮助类
- HttpClient Post和Get请求实例+ 中文参数处理
- HttpClient中的GET请求和POST请求
- Httpclient的Get请求和Post请求
- HttpClient的Get请求和Post请求
- Android中的http带参数网络请求,GET和POST
- HttpClient 的GET(带参数)、POST请求方式,工具类方法
- httpClient post/get请求。
- HttpClient get,Post请求
- HttpClient get、post请求
- httpclient的get和post请求
- HttpClient发送get和post请求
- HttpClient的get和post请求数据
- 使用HttpClient进行get和post请求
- HttpClient 的post和get请求
- Mysql建立索引
- 集合的交 并 补运算
- Android View源码解读:浅谈DecorView与ViewRootImpl
- 修改SDE表空间大小
- 如何使用 HTTP 响应头字段来提高 Web 安全性?
- HttpClient post 和get 带参数请求
- Oracle中的Truncate和Delete语句
- Linux用户空间和内核空间详解
- 无向图最小生成树
- 关于IE8的坑 (不间断更新)
- 使用pip install lib时报错time out
- [Leetcode] 303. Range Sum Query
- 关于c#的unity3d中双问号操作符(??)无法正确判断null值的问题
- 简单的评价打分控件