欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、第一種方式(HttpClient等)

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

1、封裝工具類

簡單封裝的get請求

    /**
     * 發(fā)送get請求:帶請求頭和請求參數(shù)
     *
     * @param url     請求地址
     * @param headers 請求頭
     * @param params  請求參數(shù)集合
     * @return JSONObject
     * @throws Exception
     */
    public static JSONObject doGet(String url, Map<String, Object> headers, Map<String, Object> params) throws Exception {
        //創(chuàng)建httpClient對象
        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ù)
        httpGet.setConfig(RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build());
        //設置請求頭
        packageHeader(headers, httpGet);
        CloseableHttpResponse httpResponse = null;
        try {
            return getResponse(httpResponse, httpClient, httpGet);
        } finally {
            release(httpResponse, httpClient);
        }
    }

2、測試

   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、結果驗證

二、第二種方式(RestTemplate)

RestTemplate可用于微服務間的通信,也可以用于網絡請求。

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

這是使用getForEntity進行演示。

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

1、調用方法

RestTemplate restTemplate = new RestTemplate();
        //創(chuà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}";
        //請求地址、請求體以及返回參數(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是用于微服務間消費使用的,也可以用于網絡請求。

這里的url應該是要放在配置文件中的,為了方便這邊就直接寫死。注意FeignClient中的name要配置 不然在測試類中會報錯

1、調用接口

/**
 * @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);
}

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

相關文章

  • java解析xml的4種方式的優(yōu)缺點對比及實現(xiàn)詳解

    java解析xml的4種方式的優(yōu)缺點對比及實現(xiàn)詳解

    這篇文章主要介紹了java解析xml的4種方式的優(yōu)缺點對比及實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Idea中使用Git的流程

    Idea中使用Git的流程

    這篇文章主要介紹了Idea中使用Git的流程,git是目前流行的分布式版本管理系統(tǒng)。本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-09-09
  • 解決Swagger2返回map復雜結構不能解析的問題

    解決Swagger2返回map復雜結構不能解析的問題

    這篇文章主要介紹了解決Swagger2返回map復雜結構不能解析的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java運算符實例用法總結

    java運算符實例用法總結

    在本篇文章里,我們給大家分享的是關于java運算符實例用法及實例代碼,需要的朋友們參考下。
    2020-02-02
  • Java隊列數(shù)據(jù)結構的實現(xiàn)

    Java隊列數(shù)據(jù)結構的實現(xiàn)

    這篇文章主要介紹了Java隊列數(shù)據(jù)結構的實現(xiàn),隊列是一種特殊的線性表,只允許在表的隊頭進行刪除操作,在表的后端進行插入操作,隊列是一個有序表先進先出,想了解更多相關資料的小伙伴可以參考下面文章的詳細內容
    2021-12-12
  • Java spring的三種注入方式詳解流程

    Java spring的三種注入方式詳解流程

    Spring框架由Rod Johnson開發(fā),2004年發(fā)布了Spring框架的第一版。Spring是一個從實際開發(fā)中抽取出來的框架,因此它完成了大量開發(fā)中的通用步驟,留給開發(fā)者的僅僅是與特定應用相關的部分,從而大大提高了企業(yè)應用的開發(fā)效率
    2021-10-10
  • Java實現(xiàn)九九乘法表的完整實例(對齊版)

    Java實現(xiàn)九九乘法表的完整實例(對齊版)

    這篇文章主要給大家介紹了關于Java實現(xiàn)九九乘法表(對齊版)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Java中線程組ThreadGroup與線程池的區(qū)別及示例

    Java中線程組ThreadGroup與線程池的區(qū)別及示例

    這篇文章主要介紹了Java中線程組與線程池的區(qū)別及示例,ThreadGroup是用來管理一組線程的,可以控制線程的執(zhí)行,查看線程的執(zhí)行狀態(tài)等操作,方便對于一組線程的統(tǒng)一管理,需要的朋友可以參考下
    2023-05-05
  • spring?boot集成WebSocket日志實時輸出到web頁面

    spring?boot集成WebSocket日志實時輸出到web頁面

    這篇文章主要為大家介紹了spring?boot集成WebSocket日志實時輸出到web頁面展示的詳細操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • 如何用java對接微信小程序下單后的發(fā)貨接口

    如何用java對接微信小程序下單后的發(fā)貨接口

    這篇文章主要介紹了在微信小程序后臺實現(xiàn)發(fā)貨通知的步驟,包括獲取Access_token、使用RestTemplate調用發(fā)貨接口、處理AccessToken緩存以及發(fā)貨成功后的提醒,需要的朋友可以參考下
    2025-03-03

最新評論