【发布时间】:2018-05-12 11:52:36
【问题描述】:
我在 Spring 5 中使用 REST 服务时遇到问题。场景:用户更新屏幕上的一个或两个字段并单击一个按钮。这调用了一个 Spring 控制器,该控制器依次进行两个 REST 调用以收集然后返回给浏览器的信息。我们当前的生产版本使用 Spring 4 并且运行良好。但是在升级到 5 之后,服务调用会失败,除非我将服务器置于调试模式并通过执行这两个调用的代码部分进行调试。如果我调试,它会按预期工作。如果我不调试,我会收到 NullPointerException,因为代码使用了由 REST 调用检索到的信息,但该信息不存在,因为它在 REST 服务返回信息之前关闭了连接。当我从 Spring 4 升级到 Spring 5 时,也许我错过了一个新的依赖项,或者我忽略了一些东西,或者其他什么,但我从未见过这样的事情。
编辑:这是负责 REST 服务调用的代码:
ResponseEntity<String> entity = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<String>(){});
restTemplate 是 org.springframework.web.client.RestTemplate 的自动装配实例。无论通话是否完成,我总是得到一个 ResponseEntity。但是当调用提前终止时,主体数据为空,这是不正确的。调用时总是会返回正文数据,Spring 4 总是正确捕获它。 Spring 5 仅在我调试代码时正确捕获它,但在正常执行期间失败 - 我在检查捕获的数据时看到了这一点。
【问题讨论】:
-
你能分享一下你是怎么打电话的吗? ,服务调用如何失败?请分享例外情况
-
如果你需要 SO 的帮助,总是输入一些代码,你已经尝试过的等等。