1、注册一个Encoder的Bean

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Configuration
public class FeignClientFormPostConfig {


private ObjectFactory<HttpMessageConverters> messageConverters;


// new一个form编码器,实现支持form表单提交
// 注意这里方法名称,也就是bean的名称是什么不重要,
// 重要的是返回类型要是 Encoder 并且实现类必须是 FormEncoder 或者其子类
@Bean
public Encoder feignFormEncoder() {
return new FormEncoder(new SpringEncoder(this.messageConverters));
}


@Autowired
public void setMessageConverters(ObjectFactory<HttpMessageConverters> messageConverters) {
this.messageConverters = messageConverters;
}


}

2、改造Feign接口

1
2
@PostMapping(value = "/test", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
RestResult<List<XXXVO>> test(Map<String, ?> formParams);

需要指定consumes,并且需要将入参改为map。map的key为form表单的key,value为表单key对应的值