测试实例com.example.feign.GitHubExample
测试实例com.example.feign.client.FixUrlClient
的是实例com.example.feign.client.RegCenterClient
原因是feign 默认使用jdk中的 http client组件提交http请求,但是该组件不支持使用get方式提交 http body内容,所以自动转为 post请求提交。
解决方式是引入以下依赖将jdk的 http client替换为apache http client。
对于使用spring-cloud-starter-openfeign
的项目,通过引入依赖即可替换
原因参见:org.springframework.cloud.openfeign.ribbon.HttpClientFeignLoadBalancedConfiguration
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
非spring项目使用以下代码更改http client组件
public class TestExample{
//... 这里隐藏一百万行业务代码
public static void main(String... args) {
Rap2 target = Feign.builder()
.client(new ApacheHttpClient())//XXX 使用 ApacheHttp 可以通过get方法提交http body,默认的不行
.encoder(new GsonEncoder()).target(Rap2.class, "http://192.168.0.104:8080/app/mock/7");
String repos = target.repos(new TestParam("ssss",2));
System.out.println("repos:" + repos);
}
}