SpringBoot實(shí)現(xiàn)HTTP調(diào)用的7 種方式
本文主要介紹了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)文章希望大家以后多多支持腳本之家!
- Springboot單體架構(gòu)http請(qǐng)求轉(zhuǎn)換https請(qǐng)求來支持微信小程序調(diào)用接口
- Springboot?HTTP如何調(diào)用其他服務(wù)
- springboot+HttpInvoke?實(shí)現(xiàn)RPC調(diào)用的方法
- SpringBoot 項(xiàng)目使用hutool 工具進(jìn)行 http 接口調(diào)用的處理方法
- SpringBoot?Http遠(yuǎn)程調(diào)用的方法
- SpringBoot實(shí)現(xiàn)HTTP調(diào)用的七種方式總結(jié)
- 在SpringBoot中使用UniHttp簡化天地圖路徑規(guī)劃調(diào)用實(shí)踐記錄(場景分析)
相關(guān)文章
使用MyBatis-Plus實(shí)現(xiàn)聯(lián)表查詢分頁的示例代碼
本文主要講述了如何在SpringBoot項(xiàng)目中使用MyBatis-Plus的分頁插件,通過這個(gè)示例,可以學(xué)會(huì)如何利用MyBatis-Plus進(jìn)行高效的分頁查詢,感興趣的可以了解一下2024-10-10SpringBoot整合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-05java實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Mybatis-plus如何查詢表中指定字段(不查詢?nèi)孔侄?
這篇文章主要介紹了Mybatis-plus如何查詢表中指定字段(不查詢?nèi)孔侄?,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07SpringBoot @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-12SpringBoot項(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
今天小編就為大家分享一篇關(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ù)能力,本文給大家列舉了一些內(nèi)容,大家可以根據(jù)自己需要有方法的掌握,感興趣的朋友跟隨小編一起看看吧2020-07-07