• Spring RestTemplate调用https,Hutool工具类调用https


    Spring RestTemplate调用https (需要有配置信任证书。下一篇博客配置springboot https )

    Hutool工具类调用https(默认会携带几个头信息,不需要的话可以去掉)

    package cn.luischen.controller;
    
    import cn.hutool.http.Header;
    import cn.hutool.http.HttpRequest;
    import com.alibaba.fastjson.JSONObject;
    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.ssl.SSLContextBuilder;
    import org.apache.http.ssl.TrustStrategy;
    import org.springframework.http.HttpEntity;
    import org.springframework.http.HttpHeaders;
    import org.springframework.http.MediaType;
    import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
    import org.springframework.web.client.RestTemplate;
    
    import javax.net.ssl.SSLContext;
    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.Arrays;
    import java.util.Map;
    
    public class TestHttp {
        /**
         * hutools 调用https
         *
         * @param url
         * @param params
         * @return
         */
    
        public JSONObject send(String url, Map<String, Object> params) {
            HttpRequest request = HttpRequest.post(url).body(JSONObject.toJSONString(params));
            request.removeHeader(Header.USER_AGENT);
            String body = request.execute().body();
            return JSONObject.parseObject(body);
        }
    
        /**
         * Spring RestTemplate调用https
         *
         * @param url
         * @param params
         * @return
         */
        public JSONObject send2(String url, Map<String, Object> params) {
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            headers.setAccept(Arrays.asList(MediaType.ALL));
            HttpEntity<Object> entity = new HttpEntity<>(JSONObject.toJSONString(params), headers);
            try {
                String body = getRestTemplate().postForObject(url, entity, String.class);
                return JSONObject.parseObject(body);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
    
        public static RestTemplate getRestTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
            SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
                @Override
                public boolean isTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
                    return true;
                }
            }).build();
    
            SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext,
                    new String[]{"TLSv1"},
                    null,
                    NoopHostnameVerifier.INSTANCE);
    
            CloseableHttpClient httpClient = HttpClients.custom()
                    .setSSLSocketFactory(csf)
                    .build();
    
            HttpComponentsClientHttpRequestFactory requestFactory =
                    new HttpComponentsClientHttpRequestFactory();
    
            requestFactory.setHttpClient(httpClient);
            RestTemplate restTemplate = new RestTemplate(requestFactory);
            return restTemplate;
        }
    }
  • 相关阅读:
    Azure Active Directory document ---reading notes
    tcp/ip 三次握手和4次挥手
    why microsoft named their cloud service Azure?
    Azure VMs
    Leetcode (C++) 9/20/2017开始
    How do you make an object in C? Used in RTOS.
    HF-DP1: strategy pattern
    确定一下学习的主要参考书
    记一下Thoratec的面试
    《Algorithm in C》by Sedgewick 读书笔记
  • 原文地址:https://www.cnblogs.com/liran123/p/14759372.html
Copyright © 2020-2023  润新知