• JAVA使用HttpClient发送带请求头得post和get!!!put、delete请求-------忽略ssl验证


    /**
         * POST请求(带json参数)
         * @param url 请求地址
         * @param socketTimeout 响应超时时间,根据业务而定,单位毫秒;如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用
         * @param jsonParam	json参数
         * @param headerMap 请求头             
         * @return
         */
        public static String doHeaderPostJson(String url, int socketTimeout, Map<String, String> headerMap, String jsonParam) {
            // 创建Httpclient对象
            CloseableHttpClient httpClient = HttpClients.createDefault();
            CloseableHttpResponse response = null;
            String resultString = "";
            try {
                // 创建Http Post请求
                HttpPost httpPost = new HttpPost(url);
    
                // 设置请求超时
                RequestConfig requestConfig = RequestConfig.custom()
                        // 设置连接超时时间,单位毫秒。
                        .setConnectTimeout(5000)
                        // 从连接池获取到连接的超时,单位毫秒。
                        .setConnectionRequestTimeout(1000)
                        // 请求获取数据的超时时间,单位毫秒; 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。
                        .setSocketTimeout(socketTimeout).build();
                httpPost.setConfig(requestConfig);
    
                //创建头信息
                headerMap.entrySet().forEach(entry->httpPost.addHeader(entry.getKey(), entry.getValue()));
                // 创建请求内容
                if (StringUtils.isNotBlank(jsonParam)) {
                    StringEntity entity = new StringEntity(jsonParam, ContentType.APPLICATION_JSON);
                    httpPost.setEntity(entity);
                }
    
                // 执行http请求
                response = httpClient.execute(httpPost);
    
                resultString = EntityUtils.toString(response.getEntity(), "utf-8");
            } catch (SocketTimeoutException e) {
                log.error(e.getMessage(), e);
                log.info("响应超时!!!");
            } catch (Exception e) {
                log.error(e.getMessage(), e);
            } finally {
                // 释放资源
                try {
                    httpClient.close();
                    if (null != response) {
                        response.close();
                    }
                } catch (IOException e) {
                    log.error(e.getMessage(), e);
                }
            }
            return resultString;
        }
    
        /**
         * get请求带参数
         * @param url 地址
         * @param param   参数
         * @param header 请求头
         * @return
         */
        public static String doGetHeader(String url, Map<String, String> header , Map<String, String> param) {
            // 创建Httpclient对象
            CloseableHttpClient httpclient = HttpClients.createDefault();
            String resultString = "";
            CloseableHttpResponse response = null;
            try {
                // 创建uri
                URIBuilder builder = new URIBuilder(url);
                if (param != null) {
                    for (String key : param.keySet()) {
                        builder.addParameter(key, param.get(key));
                    }
                }
                URI uri = builder.build();
                HttpGet httpGet = new HttpGet(uri);
                if (header != null) {
                    for (String key : header.keySet()) {
                        httpGet.addHeader(key, header.get(key));
                    }
                }
                response = httpclient.execute(httpGet);
                if (response.getStatusLine().getStatusCode() == 200) {
                    resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (response != null) {
                        response.close();
                    }
                    httpclient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return resultString;
        }
    
    // 下面的转自 https://www.cnblogs.com/htyjlitm/p/10036292.html
    package test.huatu.pen.util; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; public class HttpRequestUtil { private static Logger logger = Logger.getLogger(HttpRequestUtil.class); /** * 原生字符串发送get请求 * * @param url * @return * @throws IOException * @throws ClientProtocolException */ public static String doGet(String url, String token) { BasicConfigurator.configure(); CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); httpGet.setHeader("Content-type", "application/json"); httpGet.setHeader("DataEncoding", "UTF-8"); httpGet.setHeader("token", token); RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000).setConnectionRequestTimeout(35000).setSocketTimeout(60000).build(); httpGet.setConfig(requestConfig); CloseableHttpResponse httpResponse = null; try { httpResponse = httpClient.execute(httpGet); HttpEntity entity = httpResponse.getEntity(); String result = EntityUtils.toString(entity); logger.info("请求成功"); return result; } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (httpResponse != null) { try { httpResponse.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (null != httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } /** * 原生字符串发送post请求 * * @param url * @param jsonStr * @return * @throws IOException */ public static String doPost(String url, String token, String jsonStr) { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000).setConnectionRequestTimeout(35000).setSocketTimeout(60000).build(); httpPost.setConfig(requestConfig); httpPost.setHeader("Content-type", "application/json"); httpPost.setHeader("DataEncoding", "UTF-8"); httpPost.setHeader("token", token); CloseableHttpResponse httpResponse = null; try { httpPost.setEntity(new StringEntity(jsonStr)); httpResponse = httpClient.execute(httpPost); HttpEntity entity = httpResponse.getEntity(); String result = EntityUtils.toString(entity); return result; } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (httpResponse != null) { try { httpResponse.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (null != httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } /** * 原生字符串发送put请求 * * @param url * @param token * @param jsonStr * @return * @throws ClientProtocolException * @throws IOException */ public static String doPut(String url, String token, String jsonStr) { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPut httpPut = new HttpPut(url); RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000).setConnectionRequestTimeout(35000).setSocketTimeout(60000).build(); httpPut.setConfig(requestConfig); httpPut.setHeader("Content-type", "application/json"); httpPut.setHeader("DataEncoding", "UTF-8"); httpPut.setHeader("token", token); CloseableHttpResponse httpResponse = null; try { httpPut.setEntity(new StringEntity(jsonStr)); httpResponse = httpClient.execute(httpPut); HttpEntity entity = httpResponse.getEntity(); String result = EntityUtils.toString(entity); return result; } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (httpResponse != null) { try { httpResponse.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (null != httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } /** * 发送delete请求 * * @param url * @param token * @param jsonStr * @return * @throws ClientProtocolException * @throws IOException */ public static String doDelete(String url, String token, String jsonStr) { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpDelete httpDelete = new HttpDelete(url); RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000).setConnectionRequestTimeout(35000).setSocketTimeout(60000).build(); httpDelete.setConfig(requestConfig); httpDelete.setHeader("Content-type", "application/json"); httpDelete.setHeader("DataEncoding", "UTF-8"); httpDelete.setHeader("token", token); CloseableHttpResponse httpResponse = null; try { httpResponse = httpClient.execute(httpDelete); HttpEntity entity = httpResponse.getEntity(); String result = EntityUtils.toString(entity); return result; } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (httpResponse != null) { try { httpResponse.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (null != httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; }

    /**
    * 忽略ssl证书验证
    * @return
    */
    public static CloseableHttpClient createIgnoreSSLHttpClient() {
    try {
    SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
    @Override
    public boolean isTrusted(X509Certificate[] chain,
    String authType) throws CertificateException {
    return true;
    }
    }).build();
    SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
    return HttpClients.custom().setSSLSocketFactory(sslConnectionSocketFactory).build();
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

    /**
    * 创建忽略ssl证书验证的Httpclient对象
    * POST请求(带json参数)
    * @param url 请求地址
    * @param socketTimeout 响应超时时间,根据业务而定,单位毫秒;如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用
    * @param jsonParam json参数
    * @return
    */
    public static String doHeaderPostJson(String url, int socketTimeout, Map<String, String> headerMap, String jsonParam) {
    // 创建忽略ssl证书验证的Httpclient对象
    CloseableHttpClient httpClient = createIgnoreSSLHttpClient();
    CloseableHttpResponse response = null;
    String resultString = "";
    try {
    // 创建Http Post请求
    HttpPost httpPost = new HttpPost(url);
    // 设置请求超时
    RequestConfig requestConfig = RequestConfig.custom()
    // 设置连接超时时间,单位毫秒。
    .setConnectTimeout(50000)
    // 从连接池获取到连接的超时,单位毫秒。
    .setConnectionRequestTimeout(10000)
    // 请求获取数据的超时时间,单位毫秒; 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。
    .setSocketTimeout(socketTimeout).build();
    httpPost.setConfig(requestConfig);

    //创建头信息
    headerMap.entrySet().forEach(entry->httpPost.addHeader(entry.getKey(), entry.getValue()));
    // 创建请求内容
    StringEntity entity = new StringEntity(jsonParam, ContentType.APPLICATION_JSON);
    httpPost.setEntity(entity);

    // 执行http请求
    response = httpClient.execute(httpPost);

    resultString = EntityUtils.toString(response.getEntity(), "utf-8");
    } catch (SocketTimeoutException e) {
    log.error(e.getMessage(), e);
    log.info("响应超时!!!");
    } catch (Exception e) {
    log.error(e.getMessage(), e);
    } finally {
    // 释放资源
    try {
    httpClient.close();
    if (null != response) {
    response.close();
    }
    } catch (IOException e) {
    log.error(e.getMessage(), e);
    }
    }
    return resultString;
    }
    }

      

  • 相关阅读:
    SQLite常用SQL语句
    delphi设计浮动窗口
    在Delphi中使用键盘勾子获取键盘输入(译--5月7日)
    Delphi制作软键盘
    Delphi格式化输出函数(1): Format
    《你不知道的 CSS》之等比例缩放的盒子
    请用心练完这16个webpack小例子
    JavaScript高级内容笔记:原型链、继承、执行上下文、作用域链、闭包
    表格组件神器:bootstrap table详细使用指南
    玩转JavaScript正则表达式
  • 原文地址:https://www.cnblogs.com/chuan-yoyo/p/13924538.html
Copyright © 2020-2023  润新知