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

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客戶端庫。

盡管它功能強(qiáng)大,但由于其API設(shè)計(jì)較為復(fù)雜且包體積龐大,在一些輕量級(jí)的應(yī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客戶端,它提供了簡潔且高效的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(封裝版)

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

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

// 假設(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客戶端庫,它提供了簡潔的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工具類庫,其中包含了豐富的HTTP工具類。

Hutool HTTP提供了簡潔且強(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客戶端工具,它簡化了與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提供了簡潔的API和強(qiáng)大的功能,如請(qǐng)求重試、超時(shí)設(shè)置、請(qǐng)求頭等,非常適合構(gòu)建復(fù)雜的HTTP請(qǐ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)文章

  • 使用MyBatis-Plus實(shí)現(xiàn)聯(lián)表查詢分頁的示例代碼

    使用MyBatis-Plus實(shí)現(xiàn)聯(lián)表查詢分頁的示例代碼

    本文主要講述了如何在SpringBoot項(xiàng)目中使用MyBatis-Plus的分頁插件,通過這個(gè)示例,可以學(xué)會(huì)如何利用MyBatis-Plus進(jìn)行高效的分頁查詢,感興趣的可以了解一下
    2024-10-10
  • SpringBoot整合Mybatis-plus實(shí)現(xiàn)多級(jí)評(píng)論功能

    SpringBoot整合Mybatis-plus實(shí)現(xiàn)多級(jí)評(píng)論功能

    本文介紹了如何使用SpringBoot整合Mybatis-plus實(shí)現(xiàn)多級(jí)評(píng)論功能,同時(shí)提供了數(shù)據(jù)庫的設(shè)計(jì)和詳細(xì)的后端代碼,前端界面使用的Vue2,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-05-05
  • java實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼

    java實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Mybatis-plus如何查詢表中指定字段(不查詢?nèi)孔侄?

    Mybatis-plus如何查詢表中指定字段(不查詢?nèi)孔侄?

    這篇文章主要介紹了Mybatis-plus如何查詢表中指定字段(不查詢?nèi)孔侄?,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • SpringBoot @Value注解支持配置自動(dòng)刷新能力擴(kuò)展方式

    SpringBoot @Value注解支持配置自動(dòng)刷新能力擴(kuò)展方式

    本文介紹了如何通過自定義注解和BeanPostProcessor實(shí)現(xiàn)SpringBoot中@Value注解的配置自動(dòng)刷新能力,主要步驟包括:定義一個(gè)支持動(dòng)態(tài)刷新的注解,實(shí)現(xiàn)配置的動(dòng)態(tài)變更,以及通過BeanPostProcessor掃描并刷新使用@Value注解的變量
    2024-12-12
  • java實(shí)現(xiàn)簡易五子棋游戲

    java實(shí)現(xiàn)簡易五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡易五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • SpringBoot項(xiàng)目引入token設(shè)置方式

    SpringBoot項(xiàng)目引入token設(shè)置方式

    本文詳細(xì)介紹了JWT(JSON Web Token)的基本概念、結(jié)構(gòu)、應(yīng)用場景以及工作原理,通過動(dòng)手實(shí)踐,展示了如何在Spring Boot項(xiàng)目中實(shí)現(xiàn)JWT的生成、驗(yàn)證和攔截器配置
    2025-01-01
  • 解決Eclipse/STS中出現(xiàn)Resource is out of sync with the file system的異常問題

    解決Eclipse/STS中出現(xiàn)Resource is out of sync with the file system

    今天小編就為大家分享一篇關(guān)于解決Eclipse/STS中出現(xiàn)Resource is out of sync with the file system的異常問題,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 阿里資深技術(shù)專家:在各階段中3年經(jīng)驗(yàn)的java程序員應(yīng)該具備哪些技術(shù)能力

    阿里資深技術(shù)專家:在各階段中3年經(jīng)驗(yàn)的java程序員應(yīng)該具備哪些技術(shù)能力

    這篇文章主要介紹了阿里資深技術(shù)專家:在各階段中3年經(jīng)驗(yàn)的java程序員應(yīng)該具備哪些技術(shù)能力,本文給大家列舉了一些內(nèi)容,大家可以根據(jù)自己需要有方法的掌握,感興趣的朋友跟隨小編一起看看吧
    2020-07-07
  • Java實(shí)現(xiàn)的快速查找算法示例

    Java實(shí)現(xiàn)的快速查找算法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的快速查找算法,結(jié)合具體實(shí)例形式分析了快速查找算法的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09

最新評(píng)論