2017-10-19 243 views
1

服务器使用request.getInputStream()获取请求正文。如何使用FeignClient发布字符串

客户端代码:

@FeignClient(name="composer-agent") 
public interface ComposerClient { 
    @RequestMapping(value = "/agent/import_bp", method = RequestMethod.POST) 
    String importBlueprints(String payload); 
} 

,但我得到一个异常:

Caused by: feign.FeignException: status 500 reading ComposerClient#importBlueprints(String); content: 
{"timestamp":"2017-10-19T06:15:47-0400","status":500,"error":"Internal Server Error","exception":"java.lang.IllegalArgumentException","message":"MIME type may not contain reserved characters"} 
    at feign.FeignException.errorStatus(FeignException.java:62) 
    at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:91) 
    at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:138) 
    at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76) 
    at feign.hystrix.HystrixInvocationHandler$1.run(HystrixInvocationHandler.java:108) 
    at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:301) 
    at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:297) 
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46) 
    ... 144 common frames omitted 

此外,我尝试设置consumes = MediaType.APPLICATION_JSON_VALUE或其他值,或者添加@RequestBody,但我得到了同样的异常。

那么我该如何处理这个问题呢?谢谢。

+0

' “状态”:500, “错误”: “内部服务器错误”, “异常”: “java.lang.IllegalArgumentException异常”, “消息”:“MIME类型可能不包含保留字符“'。你的mimetype似乎包含非法字符。所以问题是:你正在使用哪种mimetype(它在代码中没有显示)? –

回答

0

当底层HTTP客户端是Apache HTTP客户端时,这是Feign 9.3.0中的known bug。解决方案是升级feign-httpclient依赖项。例如:

compile "io.github.openfeign:feign-httpclient:9.5.0" 
+0

我用弹簧云,和依赖关系是: \t org.springframework.cloud \t 弹簧云起动假装 cheney

+0

我创建客户端与一个接口。任何建议? – cheney

+0

将我记录的依赖项添加到与云启动程序引入的版本相匹配的版本中。如果云启动器引入的版本存在该错误,请升级您的spring-cloud版本。 Maven的目标是显示所有依赖版本以帮助您。 –

相关问题