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

SpringBoot實(shí)現(xiàn)HTTP調(diào)用的7 種方式

 更新時(shí)間:2025年04月11日 09:24:51   作者:小馬不敲代碼  
本文主要介紹了SpringBoot實(shí)現(xiàn)HTTP調(diào)用的7 種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本文主要介紹了SpringBoot實(shí)現(xiàn)HTTP調(diào)用的7 種方式,具體如下:

在這里插入圖片描述

1. HttpClient

HttpClient是Apache基金會(huì)提供的一個(gè)用于發(fā)送HTTP請(qǐng)求的Java客戶端庫(kù)。

盡管它功能強(qiáng)大,但由于其API設(shè)計(jì)較為復(fù)雜且包體積龐大,在一些輕量級(jí)的應(yīng)用場(chǎng)景中可能顯得過于臃腫。

不過,在需要高度定制化的HTTP請(qǐng)求時(shí),HttpClient依然是一個(gè)不錯(cuò)的選擇。

import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

publicclassHttpClientUtil {

    publicstatic String get(String url)throws Exception {
        CloseableHttpClienthttpClient= HttpClients.createDefault();
        RequestConfigconfig= RequestConfig.custom()
                .setConnectTimeout(12000)
                .setConnectionRequestTimeout(12000)
                .setSocketTimeout(12000)
                .build();

        HttpGetrequest=newHttpGet(url);
        request.setConfig(config);

        try (CloseableHttpResponseresponse= httpClient.execute(request)) {
            // 處理響應(yīng)
            return"Response received";
        } catch (Exception e) {
            thrownewRuntimeException("HTTP調(diào)用失敗", e);
        }
    }
}

2. OkHttp

OkHttp是一個(gè)現(xiàn)代化的HTTP客戶端,它提供了簡(jiǎn)潔且高效的API。

相比HttpClient,OkHttp更加輕量級(jí)且易于使用。

OkHttp支持同步和異步請(qǐng)求,并提供了連接池、GZIP壓縮和緩存等高級(jí)功能。

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

publicclassOkHttpUtil {

    privatestaticfinalOkHttpClientCLIENT=newOkHttpClient();

    publicstatic String get(String url)throws Exception {
        Requestrequest=newRequest.Builder()
                .url(url)
                .build();

        try (Responseresponse= CLIENT.newCall(request).execute()) {
            // 處理響應(yīng)
            return response.body().string();
        }
    }
}

3. OkHttpUtil(封裝版)

為了簡(jiǎn)化OkHttp的使用,我們可以對(duì)其進(jìn)行封裝,提供一個(gè)更加友好的API接口。

OkHttpUtil封裝版就是這樣一個(gè)工具類,它使得HTTP請(qǐng)求變得異常簡(jiǎn)單。

// 假設(shè)已經(jīng)有了一個(gè)封裝好的OkHttpUtil類

public class OkHttpUtilWrapper {

    public static String get(String url, Map<String, Object> queryParams) throws IOException {
        // 假設(shè)OkHttpUtil提供了這樣的get方法
        return OkHttpUtil.get(url, queryParams);
    }
}

4. Jodd HTTP

Jodd HTTP是另一個(gè)輕量級(jí)的HTTP客戶端庫(kù),它提供了簡(jiǎn)潔的API和高效的性能。

Jodd HTTP支持各種HTTP方法、請(qǐng)求頭、查詢參數(shù)和表單數(shù)據(jù)等,非常適合快速構(gòu)建HTTP請(qǐng)求。

import jodd.http.HttpRequest;
import jodd.http.HttpResponse;

publicclassJoddHttpUtil {

    publicstatic String get(String url, Map<String, Object> queryParams)throws IOException {
        HttpRequestrequest= HttpRequest.get(url).query(queryParams);
        HttpResponseresponse= request.send();
        return response.bodyText();
    }
}

5. Hutool HTTP

Hutool是一個(gè)Java工具類庫(kù),其中包含了豐富的HTTP工具類。

Hutool HTTP提供了簡(jiǎn)潔且強(qiáng)大的HTTP請(qǐng)求功能,支持GET、POST、PUT、DELETE等多種HTTP方法,并內(nèi)置了連接池和重試機(jī)制。

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;

publicclassHutoolHttpUtil {

    publicstatic String get(String url, Map<String, Object> queryParams)throws IOException {
        HttpRequestrequest= HttpUtil.createGet(url).form(queryParams);
        HttpResponseresponse= request.execute();
        return response.body();
    }
}

6. RestTemplate

RestTemplate是Spring框架提供的一個(gè)同步HTTP客戶端工具,它簡(jiǎn)化了與HTTP服務(wù)的通信,并統(tǒng)一了異常處理。

RestTemplate支持RESTful風(fēng)格的URL模板和請(qǐng)求參數(shù)的綁定,非常適合與RESTful服務(wù)進(jìn)行交互。

import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import org.springframework.http.ResponseEntity;

@Component
publicclassRestTemplateUtil {

    privatefinal RestTemplate restTemplate;

    publicRestTemplateUtil(RestTemplateBuilder builder) {
        this.restTemplate = builder.build();
    }

    public String get(String url, Map<String, Object> queryParams) {
        Stringuri= buildUri(url, queryParams);
        ResponseEntity<String> response = restTemplate.getForEntity(uri, String.class);
        return response.getBody();
    }

    private String buildUri(String url, Map<String, Object> queryParams) {
        // 構(gòu)建URI的邏輯
        return url;
    }
}

7. Forest

Forest是一個(gè)聲明式的HTTP客戶端框架,它允許開發(fā)者以接口的方式來定義HTTP請(qǐng)求。

Forest提供了簡(jiǎn)潔的API和強(qiáng)大的功能,如請(qǐng)求重試、超時(shí)設(shè)置、請(qǐng)求頭等,非常適合構(gòu)建復(fù)雜的HTTP請(qǐng)求場(chǎng)景。

# application.yml
forest:
  max-connections: 1000
  connect-timeout: 3000
  read-timeout: 3000
import com.dtflys.forest.annotation.Get;
import com.dtflys.forest.annotation.Post;
import com.dtflys.forest.annotation.Query;
import com.dtflys.forest.annotation.Header;
import com.dtflys.forest.annotation.JSONBody;
import com.dtflys.forest.springboot.annotation.ForestScan;
import org.springframework.stereotype.Component;

@ForestScan(basePackages = "com.example.client")
@Component
public interface TestClient {

    @Get("http://localhost:20001/test/queryById")
    String queryById(@Header Map<String, Object> headerMap, @Query Map<String, Object> params);

    @Post("http://localhost:20001/test/add")
    String add(@Header Map<String, Object> headerMap, @JSONBody UserVo userVo);
}

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

相關(guān)文章

  • Java中操作Xml使用方法備忘錄(Hutool工具類XmlUtil、XStream)

    Java中操作Xml使用方法備忘錄(Hutool工具類XmlUtil、XStream)

    這篇文章主要給大家介紹了關(guān)于Java中操作Xml使用方法(Hutool工具類XmlUtil、XStream)的相關(guān)資料,XMLUtil是一個(gè)工具類,主要用于讀取XML配置文件并提供相應(yīng)的操作方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Guava事件總線應(yīng)用場(chǎng)景最佳實(shí)踐

    Guava事件總線應(yīng)用場(chǎng)景最佳實(shí)踐

    這篇文章主要為大家介紹了Guava事件總線應(yīng)用場(chǎng)景最佳實(shí)踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • SpringSecurity在分布式環(huán)境下的使用流程分析

    SpringSecurity在分布式環(huán)境下的使用流程分析

    文章介紹了Spring?Security在分布式環(huán)境下的使用,包括單點(diǎn)登錄(SSO)的概念、流程圖以及JWT(JSON?Web?Token)的生成和校驗(yàn),通過使用JWT和RSA非對(duì)稱加密,可以實(shí)現(xiàn)安全的分布式認(rèn)證,感興趣的朋友一起看看吧
    2025-02-02
  • Java中的ThreadLocal詳解

    Java中的ThreadLocal詳解

    這篇文章主要介紹了Java中的ThreadLocal詳解,ThreadLocal?是一個(gè)線程局部變量,其實(shí)的功用非常簡(jiǎn)單,就是為每一個(gè)使用該變量的線程都提供一個(gè)變量值的副本,是Java中一種較為特殊的線程綁定機(jī)制,需要的朋友可以參考下
    2023-09-09
  • 基于Spring Boot DevTools實(shí)現(xiàn)開發(fā)過程優(yōu)化

    基于Spring Boot DevTools實(shí)現(xiàn)開發(fā)過程優(yōu)化

    這篇文章主要介紹了基于Spring Boot DevTools實(shí)現(xiàn)開發(fā)過程優(yōu)化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot 并發(fā)登錄人數(shù)控制的實(shí)現(xiàn)方法

    SpringBoot 并發(fā)登錄人數(shù)控制的實(shí)現(xiàn)方法

    這篇文章主要介紹了SpringBoot 并發(fā)登錄人數(shù)控制的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Spring集成Seata方式(案例演示)

    Spring集成Seata方式(案例演示)

    這篇文章主要介紹了Spring集成Seata方式,本案例使用Seata-All演示,結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • 玩轉(zhuǎn)spring boot MVC應(yīng)用(2)

    玩轉(zhuǎn)spring boot MVC應(yīng)用(2)

    玩轉(zhuǎn)spring boot,如何快速搭建一個(gè)MCV程序?這篇文章為大家詳細(xì)主要介紹了一個(gè)MCV程序的快速搭建過程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Netty之使用DelimiterBasedFrameDecoder進(jìn)行消息分隔詳解

    Netty之使用DelimiterBasedFrameDecoder進(jìn)行消息分隔詳解

    這篇文章主要介紹了Netty之使用DelimiterBasedFrameDecoder進(jìn)行消息分隔詳解,在使用Netty進(jìn)行TCP消息傳輸時(shí),為了上層協(xié)議能夠?qū)ο⒄_區(qū)分,避免粘包和拆包導(dǎo)致的問題,一般可以通過消息定長(zhǎng)、將回車換行符作為消息結(jié)束符,需要的朋友可以參考下
    2023-12-12
  • Mybatis如何使用動(dòng)態(tài)語句實(shí)現(xiàn)批量刪除(delete結(jié)合foreach)

    Mybatis如何使用動(dòng)態(tài)語句實(shí)現(xiàn)批量刪除(delete結(jié)合foreach)

    這篇文章主要介紹了Mybatis如何使用動(dòng)態(tài)語句實(shí)現(xiàn)批量刪除(delete結(jié)合foreach),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論

萨嘎县| 玉树县| 石渠县| 三亚市| 乐东| 永济市| 平南县| 乐至县| 女性| 巫山县| 剑河县| 阿合奇县| 都匀市| 蓬安县| 玉树县| 禹州市| 手游| 山阴县| 德昌县| 黔江区| 大名县| 嵊州市| 阿拉善右旗| 定日县| 营山县| 惠来县| 泰州市| 志丹县| 西藏| 鹤庆县| 阿拉善右旗| 新龙县| 班戈县| 汕尾市| 阿拉善右旗| 潼南县| 盐城市| 科尔| 大安市| 乐清市| 甘泉县|