feign-okhttp使用url查询参数发布请求

时间:2018-05-05 02:46:31

标签: spring-boot spring-cloud okhttp3 spring-cloud-feign

我目前已在项目中将httpurlconnection替换为feign-okhttp。我使用以下版本:

    <dependency>
        <groupId>io.github.openfeign</groupId>
        <artifactId>feign-okhttp</artifactId>
        <version>9.6.0</version>
    </dependency>

但是当我发布这个网址时遇到了问题:&#34; http://gclife-platform-service:20000/v1/user/login/log?userId=ea9dd2f707a54b11b03193c35b2ad3a4&error=SUCCESS&#34; 服务器端的日志如下:

Received [1.1
cache-control: no-cache
...

但&#34;收到了[1.1&#34;应该是:

Received [POST v1/user/login/log?userId=ea9dd2f707a54b11b03193c35b2ad3a4&error=SUCCESS HTTP/1.1 

所以这导致了解析问题。

2018-05-05 10:10:04.076 DEBUG 6525 --- [io-20000-exec-9] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header
java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens

当我发布没有查询参数的网址时,例如&#34; http://gclife-platform-service:20000/v1/message/sms/verifycode/check&#34;,我得到了:

Received [POST /v1/message/sms/verifycode/check HTTP/1.1

这是正确的结果。 我怎样才能得到这样的正确日志?有人可以帮忙吗?感谢。

2 个答案:

答案 0 :(得分:0)

当您尝试从未启用https的端点上的客户端执行https请求时,可能会发生此异常。当服务器期望原始数据时,客户端将加密请求数据。

在您的客户端网址中将https://更改为http://。

答案 1 :(得分:0)

我犯了同样的错误。 打印Feign标头,发现Content-Length是重复的定义。 enter image description here