Spring Rest Template body为null responseEntity.getBody()

时间:2016-11-14 04:36:59

标签: java spring rest spring-mvc

我是Spring新手,我使用的是4.3.0版本。在我的代码中,当我在另一个rest调用中调用该方法时,我总是将body作为null。然而,当我使用邮递员测试这种方法时,它的工作非常好。我不确定我在这里缺少什么。我查看了其他类似的问题并尝试了HttpEntity选项,但我仍然缺少一些东西。

这是我的代码。

@RequestMapping(value = "/location/{uuid}", method = RequestMethod.GET)
public ArrayList<String> getLocation(@PathVariable("uuid") String uuid) {

    String uriString = "http://user1:pass1@10.10.10.10/LocationProvider/api/" + uuid;

    try {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_XML);
        HttpEntity<?> entity = new HttpEntity<String>(headers);

        ResponseEntity<String> responseEntity = restTemplate.exchange(uriString, HttpMethod.GET, entity, String.class);
        String locations = responseEntity.getBody();

        // THIS IS THE RESPONSE I GET IN POSTMAN BUT IN DEBUGGER ITS NULL
//          <?xml version="1.0" encoding="ISO-8859-1"?>
//          <Locations>
//              <City name="New" street="First_Ave" state=""/>
//              <City name="old" street="Second_Ave" state=""/>
//          </Locations>
        return locations;

    } catch (RestClientException e) {
        logger.error(e.getMessage(), e);
        return null;
    } 
}

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

从代码的角度看,一切都很好。当我在邮递员中调用代码时,uriString的末尾没有“/ n”。

当该方法被其他方法调用时,它是“/ n”的uuid。

我刚刚在我的uri中添加了.trim(),如下所示,并且有效。

String uriString = "http://user1:pass1@10.10.10.10/LocationProvider/api/" + uuid.trim();

我想关注每一位承租人是个好主意