我面临一个奇怪的问题,即作为字符串的响应没有从一个服务返回到另一服务。我们创建了一个服务正在调用另一服务的微服务。我可以看到记录在日志中的响应。在该行之后,我立即返回该响应,但其返回为null。 我用相同的代码创建了类似的方法,并且效果很好。我已经放置了用于调用要从中返回响应的服务和服务方法的代码。
控制器:
@RequestMapping(value = "/test/save", method = RequestMethod.POST)
@ResponseBody
public String save(@RequestBody Calculation calculation,
HttpServletRequest request) {
logger.info("In .save");
String result = "false";
try {
result = CalService.save(calculation);
logger.info("Response from service is :" + result);
} catch (Exception e) {
logger.error("Exception occured in save:", e);
}
return result;
}
method call client :
public String saveCal(Calculation calculation) {
String result = null;
try {
logger.info("In save");
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("REMOTE_USER", "test");
HttpEntity<Calculation> request = new HttpEntity<Calculation>(Calculation, headers);
RestTemplate template = new RestTemplate();
template.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
result = template.postForObject(url+"/test/save", request, String.class);
} catch (Exception e) {
logger.error("Exception occured in SaveMddMd", e);
result = "fail";
}
logger.info("Save"+result);
return result;
}
返回的结果是成功还是失败。
我可以看到在控制器中打印的结果是成功的,但是当返回到客户端时,它将打印为null。我用不同的签名创建了完全相同的方法,该方法将结果作为成功返回。我们在这里使用微服务。
乔丹