最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot?調(diào)用外部接口的三種實(shí)現(xiàn)方法

 更新時(shí)間:2023年08月25日 08:24:27   作者:myprincess003  
Spring Boot調(diào)用外部接口的方式有多種,常見的有以下三種方式:RestTemplate、Feign 和 WebClient,本文就詳細(xì)介紹一下,感興趣的可以了解一下

一、第一種方式(HttpClient等)

使用插件方式,比如自帶的HttpClient,或者OkHttp,甚至是原生的HttpURLConnection 等等,這里以HttpClient為例。

1、封裝工具類

簡單封裝的get請(qǐng)求

    /**
     * 發(fā)送get請(qǐng)求:帶請(qǐng)求頭和請(qǐng)求參數(shù)
     *
     * @param url     請(qǐng)求地址
     * @param headers 請(qǐng)求頭
     * @param params  請(qǐng)求參數(shù)集合
     * @return JSONObject
     * @throws Exception
     */
    public static JSONObject doGet(String url, Map<String, Object> headers, Map<String, Object> params) throws Exception {
        //創(chuàng)建httpClient對(duì)象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        URIBuilder uriBuilder = new URIBuilder(url);
        if (params != null) {
            Set<Map.Entry<String, Object>> entrySet = params.entrySet();
            for (Map.Entry<String, Object> entry : entrySet) {
                uriBuilder.setParameter(entry.getKey(), String.valueOf(entry.getValue()));
            }
        }
        URI uri = uriBuilder.build();
        HttpGet httpGet = new HttpGet(uri);
        //設(shè)置參數(shù)
        httpGet.setConfig(RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build());
        //設(shè)置請(qǐng)求頭
        packageHeader(headers, httpGet);
        CloseableHttpResponse httpResponse = null;
        try {
            return getResponse(httpResponse, httpClient, httpGet);
        } finally {
            release(httpResponse, httpClient);
        }
    }

2、測(cè)試

   Map<String,Object> headers=new HashMap<>();
        headers.put("Key","換成你自己的key");
        Map<String,Object> query=new HashMap<>();
        query.put("city","350200");
        JSONObject jsonObject = HttpUtil.doGet("https://restapi.amap.com/v3/weather/weatherInfo", headers, query);
        log.info(JSONUtil.toJsonStr(jsonObject));

3、結(jié)果驗(yàn)證

二、第二種方式(RestTemplate)

RestTemplate可用于微服務(wù)間的通信,也可以用于網(wǎng)絡(luò)請(qǐng)求。

其有多種提交方式,postForEntity、postForObject、postForLocation等等。

這是使用getForEntity進(jìn)行演示。

RestTemplate 的使用很靈活需要自己根據(jù)實(shí)際使用

1、調(diào)用方法

RestTemplate restTemplate = new RestTemplate();
        //創(chuàng)建請(qǐng)求頭
        HttpHeaders httpHeaders = new HttpHeaders();
        //參數(shù)
        Map<String, Object> query = new HashMap<>();
        query.put("city", "350200");
        query.put("Key", "換成你自己的key");
        HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(httpHeaders);
        String url = "https://restapi.amap.com/v3/weather/weatherInfo?city={city}&Key={Key}";
        //請(qǐng)求地址、請(qǐng)求體以及返回參數(shù)類型
        ResponseEntity<JSONObject> responseEntity = restTemplate.getForEntity(url, JSONObject.class, query);
        log.info(JSONUtil.toJsonStr(responseEntity));

三、第三種方式(Feign)

引入依賴

<!-- spring-cloud-starter-openfeign -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>4.0.0</version>
</dependency>

feign是用于微服務(wù)間消費(fèi)使用的,也可以用于網(wǎng)絡(luò)請(qǐng)求。

這里的url應(yīng)該是要放在配置文件中的,為了方便這邊就直接寫死。注意FeignClient中的name要配置 不然在測(cè)試類中會(huì)報(bào)錯(cuò)

1、調(diào)用接口

/**
 * @author xysusj
 */
@FeignClient(url = "https://restapi.amap.com/v3/weather/weatherInfo",name = "weatherApi")
public interface WeatherApi {
    /**
     * 獲取天氣詳情
     *
     * @param key
     * @param city
     * @return
     */
    @GetMapping(value = "")
    JSONObject getWeather(@RequestParam("Key") String key, @RequestParam("city") String city);
}

 到此這篇關(guān)于SpringBoot 調(diào)用外部接口的三種實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)SpringBoot 調(diào)用外部接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring使用RestTemplate模擬form提交示例

    Spring使用RestTemplate模擬form提交示例

    本篇文章主要介紹了Spring使用RestTemplate模擬form提交示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • Spring JPA 增加字段執(zhí)行異常問題及解決

    Spring JPA 增加字段執(zhí)行異常問題及解決

    這篇文章主要介紹了Spring JPA 增加字段執(zhí)行異常問題及解決,具有很好的參考價(jià)值,
    2022-06-06
  • 使用ServletUtil.write方法下載接口文件中文亂碼問題解決

    使用ServletUtil.write方法下載接口文件中文亂碼問題解決

    本文主要介紹了使用ServletUtil.write方法下載接口文件中文亂碼問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Java的stream流多個(gè)字段排序的實(shí)現(xiàn)

    Java的stream流多個(gè)字段排序的實(shí)現(xiàn)

    本文主要介紹了Java的stream流多個(gè)字段排序的實(shí)現(xiàn),主要是兩種方法,第一種是固定多個(gè)字段排序和第二種動(dòng)態(tài)字段進(jìn)行排序,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • java基于TCP協(xié)議實(shí)現(xiàn)聊天程序

    java基于TCP協(xié)議實(shí)現(xiàn)聊天程序

    這篇文章主要為大家詳細(xì)介紹了java基于TCP協(xié)議實(shí)現(xiàn)聊天程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • lombok注解介紹小結(jié)

    lombok注解介紹小結(jié)

    lombok是一個(gè)可以幫助我們簡化java代碼編寫的工具類,這篇文章主要介紹了lombok注解介紹小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • Maven倉庫鏡像配置的方法實(shí)現(xiàn)

    Maven倉庫鏡像配置的方法實(shí)現(xiàn)

    本文介紹了如何使用Maven倉庫鏡像來加速構(gòu)建過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • mac下idea的svn密碼記不住的問題及處理方法

    mac下idea的svn密碼記不住的問題及處理方法

    這篇文章主要介紹了mac下idea的svn密碼記不住的問題及處理方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java設(shè)計(jì)模式單例模式(Singleton)用法解析

    Java設(shè)計(jì)模式單例模式(Singleton)用法解析

    這篇文章主要介紹了Java設(shè)計(jì)模式單例模式(Singleton)用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • springboot?實(shí)現(xiàn)動(dòng)態(tài)刷新配置的詳細(xì)過程

    springboot?實(shí)現(xiàn)動(dòng)態(tài)刷新配置的詳細(xì)過程

    這篇文章主要介紹了springboot實(shí)現(xiàn)動(dòng)態(tài)刷新配置,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

资阳市| 松潘县| 醴陵市| 磐安县| 油尖旺区| 马鞍山市| 安庆市| 稻城县| 朝阳区| 洪泽县| 磐石市| 巩义市| 临猗县| 安多县| 河池市| 临邑县| 视频| 南岸区| 昌宁县| 正安县| 将乐县| 济阳县| 保定市| 沐川县| 嘉峪关市| 普定县| 涞源县| 宣城市| 沅陵县| 榆林市| 蒙自县| 平定县| 阳山县| 寿阳县| 高唐县| 西平县| 祥云县| 稻城县| 和静县| 赤城县| 克东县|