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

Feign遠(yuǎn)程調(diào)用參數(shù)里面內(nèi)容丟失的解決方案

 更新時間:2022年03月04日 14:46:48   作者:楊林偉  
這篇文章主要介紹了Feign遠(yuǎn)程調(diào)用參數(shù)里面內(nèi)容丟失的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Feign遠(yuǎn)程調(diào)用參數(shù)里面內(nèi)容丟失

舉個例子

服務(wù)A提供了如下接口(注意這里的參數(shù)url是一個地址):

@GetMapping("/getSample")
public String getSample(@RequestParam String url){
?? ? //此處省略邏輯......
}

服務(wù)B需要調(diào)用服務(wù)A的接口,調(diào)用如下:

sampleFeignClient.getSample("http://www.xxx.com?name=dumas&age=18");

提出問題:此時調(diào)用服務(wù)A接口后,在A服務(wù)接收的方法體內(nèi),斷點會發(fā)現(xiàn)后面的參數(shù)age=18會丟失。

問題的原因:Feign遠(yuǎn)程調(diào)用是使用HTTP協(xié)議的,可能是獲取參數(shù)的時候,把參數(shù)url里面的內(nèi)容當(dāng)成了參數(shù),所以直接舍棄了。

解決方法

服務(wù)B調(diào)用前,使用URLEncoder.encode(url,"UTF-8");

服務(wù)A獲取參數(shù)后,使用URLDecoder.decode(url, "UTF-8");

Feign遠(yuǎn)程調(diào)用細(xì)節(jié)--丟失數(shù)據(jù)

同步調(diào)用

我這里只添加了header中的Cookie,當(dāng)然也可以遍歷header,把所有的都添加到新的請求,解決辦法跟Gateway丟失請求頭類似。

@Configuration
public class FeignConfiguration {
? ? //feign遠(yuǎn)程調(diào)用丟失請求頭問題
? ? @Bean("requestInterceptor")
? ? public RequestInterceptor requestInterceptor(){
? ? ? ? return template -> {
? ? ? ? ? ? ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
? ? ? ? ? ? HttpServletRequest request = attributes.getRequest();
? ? ? ? ? ? String cookie = request.getHeader("Cookie");
? ? ? ? ? ? template.header("Cookie",cookie);
? ? ? ? };
? ? }
}

異步調(diào)用

當(dāng)我們使用異步調(diào)用openfeign,上述代碼就會報空指針,獲取不到當(dāng)前的請求。

我們先獲取到當(dāng)前請求,再分享給子線程。

RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
? ? RequestContextHolder.setRequestAttributes(attributes);
? ? feign.doService();
}, executor);

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 生成二維碼的工具資料整理

    Java 生成二維碼的工具資料整理

    本文主要介紹Java 生成二維碼的幾種方法,這里給大家詳細(xì)介紹了java生成二維碼的三種工具,并附有示例代碼供大家參考,開發(fā)java 二維碼的朋友可以參考下
    2016-08-08
  • 教你幾個?Java?編程中使用技巧

    教你幾個?Java?編程中使用技巧

    枯燥的編程中總得有些樂趣,今天我們不談?wù)撃切└呱畹募寄埽棠銕讉€在編程中的奇技淫巧,說不定在某些時候還能炫耀一番呢,今天小編教你幾個?Java?編程中使用技巧,感興趣的朋友參考下吧
    2022-12-12
  • JDK 14的新特性:文本塊Text Blocks的使用

    JDK 14的新特性:文本塊Text Blocks的使用

    這篇文章主要介紹了JDK 14的新特性:文本塊Text Blocks的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 解決SpringMvc中普通類注入Service為null的問題

    解決SpringMvc中普通類注入Service為null的問題

    這篇文章主要介紹了解決SpringMvc中普通類注入Service為null的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java實現(xiàn)刪除PDF中指定頁面

    Java實現(xiàn)刪除PDF中指定頁面

    這篇文章主要為大家詳細(xì)介紹了如何使用一個免費的國產(chǎn)Java庫來刪除PDF中的指定頁面或者刪除PDF中的空白頁,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • JAVA 實現(xiàn)延遲隊列的方法

    JAVA 實現(xiàn)延遲隊列的方法

    這篇文章主要介紹了JAVA 實現(xiàn)延遲隊列的方法,文中講解非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 淺析SpringBoot及環(huán)境搭建過程

    淺析SpringBoot及環(huán)境搭建過程

    Spring Boot是由Pivotal團(tuán)隊提供的全新框架,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程.這篇文章主要介紹了SpringBoot介紹及環(huán)境搭建,需要的朋友可以參考下
    2018-01-01
  • Spring Boot Admin 的使用詳解

    Spring Boot Admin 的使用詳解

    這篇文章主要介紹了Spring Boot Admin 的使用詳解,Spring Boot Admin 用于監(jiān)控基于 Spring Boot 的應(yīng)用,有興趣的可以了解一下
    2017-09-09
  • java?cpu飆升問題的詳細(xì)分析和處理方法

    java?cpu飆升問題的詳細(xì)分析和處理方法

    Java中CPU占用過高是一個常見的問題,可能是由于線程過多、死循環(huán)、長時間的阻塞、死鎖、GC頻繁等原因?qū)е碌?這篇文章主要介紹了java?cpu飆升問題的詳細(xì)分析和處理方法,需要的朋友可以參考下
    2025-03-03
  • Spring Boot集成Ehcache緩存解決方式

    Spring Boot集成Ehcache緩存解決方式

    在本篇文章里小編給大家整理的是關(guān)于Spring Boot集成Ehcache緩存解決方式,需要的朋友們可以學(xué)習(xí)下。
    2019-12-12

最新評論

土默特左旗| 两当县| 锦屏县| 济宁市| 吴江市| 五家渠市| 鹿泉市| 嘉定区| 怀宁县| 梅河口市| 高要市| 玉溪市| 高邑县| 余江县| 桂阳县| 天长市| 梓潼县| 牟定县| 张家港市| 礼泉县| 兴山县| 两当县| 江口县| 景谷| 平武县| 修水县| 罗源县| 巩义市| 祁连县| 金昌市| 江达县| 靖远县| 七台河市| 瓮安县| 新余市| 宁津县| 静宁县| 巫山县| 都匀市| 和龙市| 南岸区|