Feign远程调用参数里的内容丢失如何解决
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要讲解了"Feign远程调用参数里的内容丢失如何解决",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Feign远程调用参数里的内容丢失如何解决
千家信息网最后更新 2025年01月18日Feign远程调用参数里的内容丢失如何解决
这篇文章主要讲解了"Feign远程调用参数里的内容丢失如何解决",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Feign远程调用参数里的内容丢失如何解决"吧!
Feign远程调用参数里面内容丢失
举个例子
服务A提供了如下接口(注意这里的参数url是一个地址):
@GetMapping("/getSample")public String getSample(@RequestParam String url){ //此处省略逻辑......}
服务B需要调用服务A的接口,调用如下:
sampleFeignClient.getSample("http://www.xxx.com?name=dumas&age=18");
提出问题:此时调用服务A接口后,在A服务接收的方法体内,断点会发现后面的参数age=18会丢失。
问题的原因:Feign远程调用是使用HTTP协议的,可能是获取参数的时候,把参数url里面的内容当成了参数,所以直接舍弃了。
解决方法
服务B调用前,使用URLEncoder.encode(url,"UTF-8");
服务A获取参数后,使用URLDecoder.decode(url, "UTF-8");
Feign远程调用细节--丢失数据
同步调用
我这里只添加了header中的Cookie,当然也可以遍历header,把所有的都添加到新的请求,解决办法跟Gateway丢失请求头类似。
@Configurationpublic class FeignConfiguration { //feign远程调用丢失请求头问题 @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); }; }}
异步调用
当我们使用异步调用openfeign,上述代码就会报空指针,获取不到当前的请求。
我们先获取到当前请求,再分享给子线程。
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();CompletableFuturefuture = CompletableFuture.runAsync(() -> { RequestContextHolder.setRequestAttributes(attributes); feign.doService();}, executor);
感谢各位的阅读,以上就是"Feign远程调用参数里的内容丢失如何解决"的内容了,经过本文的学习后,相信大家对Feign远程调用参数里的内容丢失如何解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
参数
内容
服务
问题
接口
学习
方法
UTF-8
代码
例子
办法
原因
地址
就是
思路
情况
指针
数据
文章
断点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机软件开发人员工作内容
数据库技术相关证书
数据库中1 1的例子
杭州领奇互联网科技平台
网络安全综合治理校园
通信盒子软件开发
国家藏品数据库
数据库管理器怎么打开
苹果手机下载服务器怎么打开
华为数通部门软件开发工程师
dht 服务器
英国游戏软件开发专业有哪些
阿里云创建镜像后如何进入服务器
虹口区品牌软件开发报价表
数据库同义词
用户画像数据库设计
ssh提示服务器发送了数据
中国网络安全公告
计算机网络技术及原理
java三种web服务器
嘉兴公司网络安全准入控制哪家好
服务器不显示svg
vb数据库界面
网络安全软件市场状况
江西绿色软件开发
网络安全课堂怎么样
河北科灿网络技术有限公司
奉贤区重型网络技术价格走势
全国网络安全大赛kk
吴翰清网络安全专家