restTemplate.postForEntity 调用报错问题解决

org.springframework.web.client.RestClientException: Error while extracting response for type [interface java.util.Map] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token 'success': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'success': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (PushbackInputStream); line: 1, column: 8]
    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:120) ~[spring-web-5.3.2.jar!/:5.3.2]
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:1034) ~[spring-web-5.3.2.jar!/:5.3.2]
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:1017) ~[spring-web-5.3.2.jar!/:5.3.2]
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:777) ~[spring-web-5.3.2.jar!/:5.3.2]
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:710) ~[spring-web-5.3.2.jar!/:5.3.2]
    at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:467) ~[spring-web-5.3.2.jar!/:5.3.2]
    at  com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'success': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (PushbackInputStream); line: 1, column: 8]
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:285) ~[spring-web-5.3.2.jar!/:5.3.2]
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:243) ~[spring-web-5.3.2.jar!/:5.3.2]
    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:105) ~[spring-web-5.3.2.jar!/:5.3.2]
    ... 9 common frames omitted
Caused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'success': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (PushbackInputStream); line: 1, column: 8]
    at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851) ~[jackson-core-2.11.3.jar!/:2.11.3]
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:717) ~[jackson-core-2.11.3.jar!/:2.11.3]
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3588) ~[jackson-core-2.11.3.jar!/:2.11.3]
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2683) ~[jackson-core-2.11.3.jar!/:2.11.3]
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:865) ~[jackson-core-2.11.3.jar!/:2.11.3]
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:757) ~[jackson-core-2.11.3.jar!/:2.11.3]
    at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4664) ~[jackson-databind-2.11.3.jar!/:2.11.3]
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4513) ~[jackson-databind-2.11.3.jar!/:2.11.3]
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3521) ~[jackson-databind-2.11.3.jar!/:2.11.3]
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:274) ~[spring-web-5.3.2.jar!/:5.3.2]
    ... 11 common frames omitted

最后发现是 调用的返回 参数设置错误导致

我设置的返回参数是Map.class 
restTemplate.postForEntity(url, httpEntity, Map.class);

但是我调用的链接的url返回的是返回的String类型(问题的根源)。

后设置成

restTemplate.postForEntity(url, httpEntity, String.class);

报错问题解决了!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当使用 `RestTemplate` 的 `postForEntity` 方法调用失败时,可能有多种原因导致。以下是一些常见的问题解决方法: 1. 网络连接问题:首先,请确保目标服务可访问,并且你的网络连接正常。可以尝试使用浏览器或其他工具访问目标服务的 API,确认是否能够正常响应。 2. URL 地址错误:检查你传递给 `postForEntity` 方法的 URL 地址是否正确。确保包含了正确的协议(如 `http://` 或 `https://`),并且完整地指定了目标服务的主机名、端口和路径。 3. 请求参数问题:检查你传递给 `postForEntity` 方法的请求参数是否正确。确保参数的名称和值与目标服务的 API 要求相匹配。 4. 请求体问题:如果你需要发送请求体内容,确保你正确设置了请求体。可以使用 `HttpEntity` 或 `MultiValueMap` 对象来包装请求体,并传递给 `postForEntity` 方法。 5. 请求头问题:如果目标服务需要特定的请求头信息,请确保你正确设置了请求头。可以使用 `HttpHeaders` 对象来设置请求头,并将其作为参数传递给 `postForEntity` 方法。 6. 服务端错误:如果以上步骤都没有问题,但仍然收到失败响应,可能是目标服务返回了错误信息。可以查看响应对象中的状态码、错误信息等来排查问题。 如果你能提供更多的错误信息、代码示例或详细的错误日志,我可以给出更具体的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybcwjj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值