Feign对接Post请求,application/x-www-form-urlencoded类型请求接口
我们最常用的接口请求方式,一个是Get一个是Post请求类型是json的,这两个是最常规的,只要按照官方配置Get对应@GetMapping,参数使用@RequestParam标识,Post+json的接口使用@PostMapping然后接口使用@RequestBody标识一般也不会有什么问题。但是,如果需要对接的接口是多个参数,Conten-Type还是application/x-www-for
·
我们最常用的接口请求方式,一个是Get一个是Post请求类型是json的,这两个是最常规的,只要按照官方配置Get对应@GetMapping,参数使用@RequestParam标识,Post+json的接口使用@PostMapping然后接口使用@RequestBody标识一般也不会有什么问题。
但是,如果需要对接的接口是多个参数,Conten-Type还是application/x-www-form-urlencoded类型,同时要求多个参数都要放到requestBody里面的情况就需要稍微注意了,要知道一个方法只能使用一个@RequestBody注解,要是打包成一个实体类的话,因为是接口是别人给的,我们也不知道实体类的类名,中间会出现一个类型无法解析的错误。这个时候可以考虑用map的形式自行构造键值对,同时在@PostMapping中指明请求类型
@FeignClient(name = "DmAppearanceToken",url = "https://foas9we.com";)
public interface DmAppearanceTokenFeign {
@PostMapping(value = "/showhand/token",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE )
String getAppearanceToken(@RequestBody MultiValueMap<String,Object> tokenVO);
}
MultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
map.add("username",tokenVO.getUsername());
map.add("password",tokenVO.getPassword());
map.add("client_id",tokenVO.getClient_id());
map.add("client_secret",tokenVO.getClient_secret());
map.add("scope",tokenVO.getScope());
map.add("grant_type",tokenVO.getGrant_type());
String msg = dmAppearanceTokenFeign.getAppearanceToken(map);
更多推荐
已为社区贡献1条内容
所有评论(0)