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

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

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

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

在這里插入圖片描述

1. HttpClient

HttpClient是Apache基金會提供的一個用于發(fā)送HTTP請求的Java客戶端庫。

盡管它功能強大,但由于其API設計較為復雜且包體積龐大,在一些輕量級的應用場景中可能顯得過于臃腫。

不過,在需要高度定制化的HTTP請求時,HttpClient依然是一個不錯的選擇。

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)) {
            // 處理響應
            return"Response received";
        } catch (Exception e) {
            thrownewRuntimeException("HTTP調用失敗", e);
        }
    }
}

2. OkHttp

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

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

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

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()) {
            // 處理響應
            return response.body().string();
        }
    }
}

3. OkHttpUtil(封裝版)

為了簡化OkHttp的使用,我們可以對其進行封裝,提供一個更加友好的API接口。

OkHttpUtil封裝版就是這樣一個工具類,它使得HTTP請求變得異常簡單。

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

public class OkHttpUtilWrapper {

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

4. Jodd HTTP

Jodd HTTP是另一個輕量級的HTTP客戶端庫,它提供了簡潔的API和高效的性能。

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

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是一個Java工具類庫,其中包含了豐富的HTTP工具類。

Hutool HTTP提供了簡潔且強大的HTTP請求功能,支持GET、POST、PUT、DELETE等多種HTTP方法,并內置了連接池和重試機制。

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框架提供的一個同步HTTP客戶端工具,它簡化了與HTTP服務的通信,并統(tǒng)一了異常處理。

RestTemplate支持RESTful風格的URL模板和請求參數(shù)的綁定,非常適合與RESTful服務進行交互。

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) {
        // 構建URI的邏輯
        return url;
    }
}

7. Forest

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

Forest提供了簡潔的API和強大的功能,如請求重試、超時設置、請求頭等,非常適合構建復雜的HTTP請求場景。

# 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);
}

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

相關文章

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

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

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

    Guava事件總線應用場景最佳實踐

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

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

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

    Java中的ThreadLocal詳解

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

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

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

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

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

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

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

    玩轉spring boot MVC應用(2)

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

    Netty之使用DelimiterBasedFrameDecoder進行消息分隔詳解

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

    Mybatis如何使用動態(tài)語句實現(xiàn)批量刪除(delete結合foreach)

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

最新評論

雷波县| 托克逊县| 攀枝花市| 贡觉县| 略阳县| 三台县| 建宁县| 华阴市| 富民县| 禹城市| 曲阜市| 资溪县| 城固县| 昌黎县| 沾益县| 房山区| 衡阳县| 彰武县| 安义县| 平泉县| 宜都市| 明光市| 乌鲁木齐县| 佛学| 克东县| 连平县| 砀山县| 南阳市| 富蕴县| 弥勒县| 兴仁县| 富宁县| 万宁市| 中宁县| 伊金霍洛旗| 兴业县| 平遥县| 鄂伦春自治旗| 海盐县| 平顺县| 康马县|