我们最常用的接口请求方式,一个是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);

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐