• http请求方式CloseableHttpClient


    http请求方式-CloseableHttpClient

    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.example.core.mydemo.http.OrderReqVO;
    import org.apache.http.HttpEntity;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.conn.ssl.NoopHostnameVerifier;
    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.ssl.SSLContextBuilder;
    import org.apache.http.ssl.TrustStrategy;
    import org.apache.http.util.EntityUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import javax.net.ssl.HostnameVerifier;
    import javax.net.ssl.SSLContext;
    import java.io.IOException;
    import java.security.KeyManagementException;
    import java.security.KeyStoreException;
    import java.security.NoSuchAlgorithmException;
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    /**
     * httpclient 实现https请求,4.4版本之后,工具类如下
     */
    public class CloseableHttpClientUtils {
    
        private static Logger logger = LoggerFactory.getLogger(CloseableHttpClientUtils.class);
        static CloseableHttpClient httpClient;
        static CloseableHttpResponse httpResponse;
    
        public static CloseableHttpClient createSSLClientDefault() {
            try {
                SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
                    // 信任所有
                    @Override
                    public boolean isTrusted(X509Certificate[] x509Certificates, String authType) throws CertificateException {
                        return true;
                    }
                }).build();
                HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE;
                SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, hostnameVerifier);
                return HttpClients.custom().setSSLSocketFactory(sslsf).build();
            } catch (KeyManagementException e) {
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            } catch (KeyStoreException e) {
                e.printStackTrace();
            }
            return HttpClients.createDefault();
    
        }
    
        /**
         * 发送https请求
         *
         * @throws Exception
         */
        public static String sendByHttp(Map<String, Object> params, String url) {
            try {
                HttpPost httpPost = new HttpPost(url);
                List<NameValuePair> listNVP = new ArrayList<NameValuePair>();
                if (params != null) {
                    for (String key : params.keySet()) {
                        listNVP.add(new BasicNameValuePair(key, params.get(key).toString()));
                    }
                }
                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(listNVP, "UTF-8");
                logger.info("创建请求httpPost-URL={},params={}", url, listNVP);
                httpPost.setEntity(entity);
                httpClient = CloseableHttpClientUtils.createSSLClientDefault();
                httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                if (httpEntity != null) {
                    String jsObject = EntityUtils.toString(httpEntity, "UTF-8");
                    return jsObject;
                } else {
                    return null;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            } finally {
                try {
                    httpResponse.close();
                    httpClient.close();
                    logger.info("请求流关闭完成");
                } catch (IOException e) {
                    logger.info("请求流关闭出错");
                    e.printStackTrace();
                }
            }
        }
    
        public static void main(String[] args) throws Exception {
            OrderReqVO data = new OrderReqVO();
            data.setOrderNum("111123333");
            data.setServerType("take");
    
            Map<String, Object> map = JSONObject.parseObject(JSON.toJSONString(data));
    
            String url = "https://域名/接口名称";
    
            System.out.println("返回结果=" + CloseableHttpClientUtils.sendByHttp(map, url));;
        }
    
    }
  • 相关阅读:
    PHP学习路径及练手项目合集
    Java学习路径及练手项目合集
    Pandas 常见的基本方法
    MAC 下配置MQTT 服务器Mosquitto
    MQTT 在 mac 上搭建
    Git学习--版本回退
    Git学习--创建版本库
    js判断是否在微信浏览器中打开
    微信浏览器HTTP_USER_AGENT判断
    XXX.APP已损坏,打不开.你应该将它移到废纸篓
  • 原文地址:https://www.cnblogs.com/oktokeep/p/16789357.html
Copyright © 2020-2023  润新知