1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        SpringBoot系列之RestTemplate調(diào)https接口

        共 5413字,需瀏覽 11分鐘

         ·

        2020-12-05 23:46

        走過(guò)路過(guò)不要錯(cuò)過(guò)

        點(diǎn)擊藍(lán)字關(guān)注我們


        業(yè)務(wù):本系統(tǒng)接口都是http的,調(diào)用第三方接口,因?yàn)樽隽税踩孕r?yàn),所以不能通過(guò)RestTemplate調(diào)用

        方法:重寫(xiě)覆蓋SimpleClientHttpRequestFactory抽象類(lèi)的prepareConnection方法

        package com.minstone.apprBase.common.utils.http.rest;

        import org.apache.http.conn.ssl.SSLContexts;
        import org.apache.http.conn.ssl.TrustStrategy;
        import org.springframework.http.client.SimpleClientHttpRequestFactory;

        import javax.net.ssl.HttpsURLConnection;
        import javax.net.ssl.SSLContext;
        import java.net.HttpURLConnection;
        import java.security.KeyStore;
        import java.security.cert.CertificateException;
        import java.security.cert.X509Certificate;

        /**
        * 兼容調(diào)Https接口
        * @Author mazq
        * @Date 2020/06/04 17:16
        * @Param
        * @return
        */

        public class HttpsClientRequestFactory extends SimpleClientHttpRequestFactory {

        @Override
        protected void prepareConnection(HttpURLConnection connection, String httpMethod) {
        try {
        if (!(connection instanceof HttpsURLConnection)) {// http協(xié)議
        //throw new RuntimeException("An instance of HttpsURLConnection is expected");
        super.prepareConnection(connection, httpMethod);
        }
        if (connection instanceof HttpsURLConnection) {// https協(xié)議,修改協(xié)議版本
        KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
        // 信任任何鏈接
        TrustStrategy anyTrustStrategy = new TrustStrategy() {
        @Override
        public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
        return true;
        }
        };
        SSLContext ctx = SSLContexts.custom().useTLS().loadTrustMaterial(trustStore, anyTrustStrategy).build();
        ((HttpsURLConnection) connection).setSSLSocketFactory(ctx.getSocketFactory());
        HttpsURLConnection httpsConnection = (HttpsURLConnection) connection;
        super.prepareConnection(httpsConnection, httpMethod);
        }
        } catch (Exception e) {
        e.printStackTrace();
        }
        }
        }

        關(guān)鍵代碼,new RestTemplate(new HttpsClientRequestFactory());,對(duì)應(yīng)工具類(lèi)參考:

        package com.minstone.apprBase.common.utils.http.rest;

        import com.minstone.apprBase.common.utils.web.WebUtil;
        import org.springframework.http.*;
        import org.springframework.stereotype.Component;
        import org.springframework.web.client.RestTemplate;

        import java.util.Map;

        /**
        *

        * RestTemplate 遠(yuǎn)程調(diào)用工具類(lèi)
        *

        *
        *

        * @author mazq
        * 修改記錄
        * 修改后版本: 修改人:修改日期: 2020/06/01 11:38 修改內(nèi)容:
        *

        */

        @Component
        public class RestTemplateUtils {


        public static RestTemplate geTemplate(){
        return new RestTemplate(new HttpsClientRequestFactory());
        }

        /**
        * GET請(qǐng)求調(diào)用方式
        * @Author mazq
        * @Date 2020/06/01 13:47
        * @Param [url, responseType, uriVariables]
        * @return org.springframework.http.ResponseEntity
        */

        public static ResponseEntity getForEntity(String url, Class responseType, Map uriVariables) {
        return geTemplate().getForEntity(url, responseType, uriVariables);
        }

        /**
        * POST請(qǐng)求調(diào)用方式
        * @Author mazq
        * @Date 2020/06/01 13:47
        * @Param [url, headers, body, responseType]
        * @return org.springframework.http.ResponseEntity
        */

        public static ResponseEntity postForEntity(String url,HttpHeaders headers, Object requestBody , Class responseType ){

        HttpEntity requestEntity = new HttpEntity(requestBody, headers);
        return geTemplate().postForEntity(url, requestEntity, responseType);
        }

        /**
        * PUT請(qǐng)求調(diào)用方式
        * @Author mazq
        * @Date 2020/06/01 13:35
        * @param url 請(qǐng)求URL
        * @param headers 請(qǐng)求頭參數(shù)
        * @param requestBody 請(qǐng)求參數(shù)體
        * @param responseType 返回對(duì)象類(lèi)型
        * @param uriVariables URL中的變量,與Map中的key對(duì)應(yīng)
        * @return ResponseEntity 響應(yīng)對(duì)象封裝類(lèi)
        */

        public static ResponseEntity put(String url, HttpHeaders headers, Object requestBody, Class responseType, Map uriVariables) {
        HttpEntity requestEntity = new HttpEntity(requestBody, headers);
        return geTemplate().exchange(url, HttpMethod.PUT, requestEntity, responseType, uriVariables);
        }

        /**
        * DELETE請(qǐng)求調(diào)用方式
        * @Author mazq
        * @Date 2020/06/01 13:37
        * @param url 請(qǐng)求URL
        * @param headers 請(qǐng)求頭參數(shù)
        * @param requestBody 請(qǐng)求參數(shù)體
        * @param responseType 返回對(duì)象類(lèi)型
        * @param uriVariables URL中的變量,按順序依次對(duì)應(yīng)
        * @return ResponseEntity 響應(yīng)對(duì)象封裝類(lèi)
        */

        public static ResponseEntity delete(String url, HttpHeaders headers, Object requestBody, Class responseType, Object... uriVariables) {
        HttpEntity requestEntity = new HttpEntity(requestBody, headers);
        return geTemplate().exchange(url, HttpMethod.DELETE, requestEntity, responseType, uriVariables);
        }

        /**
        * 通用調(diào)用方式
        * @Author mazq
        * @Date 2020/06/01 13:37
        * @Param [url, method, requestEntity, responseType, uriVariables]
        * @return org.springframework.http.ResponseEntity
        */

        public static ResponseEntity exchange(String url, HttpMethod method, HttpEntity requestEntity, Class responseType, Map uriVariables) {
        return geTemplate().exchange(url, method, requestEntity, responseType, uriVariables);
        }
        }




        往期精彩推薦



        騰訊、阿里、滴滴后臺(tái)面試題匯總總結(jié) — (含答案)

        面試:史上最全多線程面試題 !

        最新阿里內(nèi)推Java后端面試題

        JVM難學(xué)?那是因?yàn)槟銢](méi)認(rèn)真看完這篇文章


        END


        關(guān)注作者微信公眾號(hào) —《JAVA爛豬皮》


        了解更多java后端架構(gòu)知識(shí)以及最新面試寶典


        你點(diǎn)的每個(gè)好看,我都認(rèn)真當(dāng)成了


        看完本文記得給作者點(diǎn)贊+在看哦~~~大家的支持,是作者源源不斷出文的動(dòng)力


        作者:SmileNicky

        出處:https://www.cnblogs.com/mzq123/p/13152885.html

        瀏覽 23
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

          <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            免费成人在线观看视频 | 九九久久久久 | 一区无码在线 | 国产女人水真多18毛片18精品视频 | 伊人久久久久久久久久久久久久久 | 欧美成人精品一区二区三区在线看 | 欧美福利视频一区二区 | 韩日无码视频 | 在线观看三级视频 | 成人无码免费在线视频 |