解决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");

本文完!

目录
相关文章
|
6月前
|
Java Spring
SpringBoot接收参数的方式
本文介绍了Java Spring Boot中处理GET请求的多种方式。可以使用方法参数直接接收,或者通过`@RequestParam`注解指定必传参数。此外,可以用实体类接收多个相关参数,但不能同时使用`@RequestParam`。还可以通过`HttpServletRequest`对象获取参数,或利用`@PathVariable`接收路径变量。对于数组和集合参数,需注意使用`@RequestParam`注解。
220 1
|
6月前
|
应用服务中间件 nginx 微服务
SpringCloud解决feign调用token丢失问题
【5月更文挑战第2天】在feign调用中可能会遇到如下问题: * 同步调用中,token丢失,这种可以通过创建一个拦截器,将token做透传来解决 * 异步调用中,token丢失,这种就无法直接透传了,因为子线程并没有**token**,这种需要先将token从父线程传递到子线程,再进行透传
407 3
|
4月前
|
负载均衡 Java API
通用快照方案问题之Feign添加请求拦截器如何解决
通用快照方案问题之Feign添加请求拦截器如何解决
29 1
|
5月前
|
存储 缓存 负载均衡
OpenFeign高级用法:缓存、QueryMap、MatrixVariable、CollectionFormat优雅地远程调用
OpenFeign高级用法:缓存、QueryMap、MatrixVariable、CollectionFormat优雅地远程调用
|
6月前
|
JSON 前端开发 Java
深入解析SpringBoot的请求响应机制
深入解析SpringBoot的请求响应机制
|
存储 缓存 网络协议
Nacos 服务端健康检查及客户端服务订阅机制源码分析(三)(上)
Nacos 服务端健康检查及客户端服务订阅机制源码分析(三)
225 0
|
设计模式 程序员 Nacos
Nacos 服务端健康检查及客户端服务订阅机制源码分析(三)(下)
Nacos 服务端健康检查及客户端服务订阅机制源码分析(三)(下)
138 0
|
Java Spring
spring如何保证事件顺序发送
spring如何保证事件顺序发送
|
Sentinel
openFeign 异步 调用丢失上下文怎么破?
openFeign 异步 调用丢失上下文怎么破?
|
前端开发 Java 数据安全/隐私保护
Spring中请求数据传递和控制接受
页面提交数据的方法三种方法: 直接通过url请求地址通过 “?” 拼接请求参数的方式 通过页面的from表单submit类型的按钮提交的方式(get和post) 通过JavaScrip(JQ),Ajax异步请求提交数据。(数据可以是通过form表单,或是通过其他方式获得的数据)
84 0