昨天在开发中使用restTemplate去调用postForObject时,一直报错Error while extracting response for type [class java.lang.String] and content type [text/plain;charset=utf-8];
调用的代码逻辑也很简单,就是一个封装了请求头,使用x-www-form-urlencoded的post请求方式。
一开始我以为是我的请求头有问题,导致接口返回的类型不匹配。于是在请求头封装了accept;后面发现毫无作用,只不过报的错变成了406 Not Acceptable: [no body],客户端无法解析服务端返回的内容。
后面又修改请求头的Context-Type,httpHeaders.setContentType(MediaType.TEXT_PLAIN);
,也只是病急乱投医,属于是随便塞值了。毫无用处,依旧报错406 Not Acceptable: [no body]。还是继续跟代码,进到RestTemplate的postForObject下,发现原来这个方法都是需要填写一个返回类型Class<T> responseType
我上面的代码指定
String.class
的返回值类型,所以问题就是出在这,即返回值是JSONObject.class
,但是我却用String.class
来接收,所以就一直报返回值不匹配的错误。
restTemplate报错response for type [class java.lang.String] and content type [text/plain;charset=utf-8]
于 2022-03-23 10:42:25 首次发布