2016-11-14 3 views
0

Я новичок в Spring и использую версию 4.3.0. В моем коде я получаю тело как null всегда, когда я вызываю метод в другом вызове отдыха. Однако, когда я тестирую этот метод с помощью почтальона, он работает отлично. Я не уверен, чего здесь не хватает. Я рассмотрел другие подобные вопросы и попробовал варианты HttpEntity, но все же я что-то пропустил.Spring Rest Template body is null responseEntity.getBody()

Вот мой код.

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

    String uriString = "http://user1:[email protected]/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; 
    } 
} 

Большое спасибо за помощь.

+0

Предоставьте запрос Почтальона дамп пожалуйста. Вы можете это, нажав на ссылку «код» на правом углу почтальона и экспортируя его в формате HTTP – ScanQR

+0

, получаете ли вы значение null в качестве ответа? –

+0

попробуйте добавить этот restTemplate.getMessageConverters() .add (0, новый StringHttpMessageConverter (Charset.forName («ISO-8859-1»))); – cralfaro

ответ

0

Похоже, все было в порядке с кодовой точки зрения. Когда я вызывал код в почтальоне, в конце uriString не было «/ n».

Принимая во внимание, что метод был вызван другим методом, он был uuid с "/ n".

Я только что добавил .trim() к моему uri, как показано ниже, и это сработало.

String uriString = "http://user1:[email protected]/LocationProvider/api/" + uuid.trim(); 

Я думаю, что это хорошая идея, чтобы обратить внимание на каждый фрахтователь

Смежные вопросы