定义Feign接口
@RequestMapping(produces = MediaType.APPLICATION_JSON_UTF8_VALUE, method = RequestMethod.GET,
value = "/temp/test/data")
String testData(@RequestParam("data") String data);
调用Feign接口
@GetMapping("/internal/test/data")
public String testData(@RequestParam("data") String data){
return facadeFeignClient.testData(data);
}
调用feign接口报错
Caused by: org.springframework.web.client.RestClientException: Error while extracting response for type [class java.lang.String] and content type [application/json;charset=UTF-8]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token 'adsf22': was expecting ('true', 'false' or 'null'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'adsf22': was expecting ('true', 'false' or 'null')
at [Source: (PushbackInputStream); line: 1, column: 13]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:117)
at org.springframework.cloud.openfeign.support.SpringDecoder.decode(SpringDecoder.java:59)
at org.springframework.cloud.openfeign.support.ResponseEntityDecoder.decode(ResponseEntityDecoder.java:62)
at feign.optionals.OptionalDecoder.decode(OptionalDecoder.java:36)
at feign.SynchronousMethodHandler.decode(SynchronousMethodHandler.java:176)
... 79 more
Caused by: org.springframework.web.client.RestClientException: Error while extracting response for type [class java.lang.String] and content type [application/json;charset=UTF-8]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token 'adsf22': was expecting ('true', 'false' or 'null'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'adsf22': was expecting ('true', 'false' or 'null')
at [Source: (PushbackInputStream); line: 1, column: 13]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:117)
at org.springframework.cloud.openfeign.support.SpringDecoder.decode(SpringDecoder.java:59)
at org.springframework.cloud.openfeign.support.ResponseEntityDecoder.decode(ResponseEntityDecoder.java:62)
at feign.optionals.OptionalDecoder.decode(OptionalDecoder.java:36)
at feign.SynchronousMethodHandl
问题分析
跟踪代码发现,这里的messageConverter只有一个,没有对应的String的converter.
正确的Converter
问题根源
项目中HttpMessageConverters这个bean被重写了,且只定义了一个MappingJackson2HttpMessageConverter
@Bean
public HttpMessageConverters customConverters() {
return new HttpMessageConverters(false, Arrays.asList(new MappingJackson2HttpMessageConverter()));
}
解决方法
删除项目中重写的HttpMessageConverters这个Bean方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)