2014-02-04 9 views
0

Как отправить запрос POST, где должны быть параметры запроса в теле сообщения?Spring resttemplate

Я пробовал:

MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>(); 
map.add("name", "xx"); 
map.add("password", "xx"); 

restTemplate.postForObject("URL", map, Response.class); 

Но это не работает. Я хочу отправить данные в bitstamp api.

EDIT: Моя весна фасоль кажется:

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> 
    <property name="messageConverters"> 
     <list> 
      <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> 
     </list> 
    </property> 
</bean> 

EDIT 2: Мой код кажется

List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>(); 
acceptableMediaTypes.add(MediaType.APPLICATION_JSON);// or any other 

HttpHeaders headers = new HttpHeaders(); 
headers.setAccept(acceptableMediaTypes); 

HttpEntity<String> requestEntity = new HttpEntity<String>("key=XX&nonce=XX&signature=XX", headers); 
ResponseEntity<AccountBalance> responseEntity = restTemplate.exchange(
"https://www.bitstamp.net/api/balance/", HttpMethod.POST, requestEntity, AccountBalance.class); 

Response теперь: Отсутствует ключ, подпись и Нонс параметры

Но это должно быть : Ключ API не найден

+0

'параметры запроса в сообщении body' это само собой противоречивое. Параметры запроса указаны в URL-адресе, тело запроса - тело запроса. – Taylor

+0

Да, но я сделал это в SOAPUI, и есть кнопка Post Query string в тело, а затем она работает. Я не могу получить тот же результат с restTemplate :-( – user1089362

+0

Итак, как отправить данные в тело запроса с restTemplate? Потому что это не работает для меня. – user1089362

ответ

1

Он теперь работает, спасибо всем :-)

MultiValueMap<String, String> body = new LinkedMultiValueMap<String, String>(); 
body.add("key", "XXX"); 
body.add("nonce", "XX"); 
body.add("signature", "XX"); 

HttpHeaders headers = new HttpHeaders(); 
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); 

HttpEntity<?> requestEntity = new HttpEntity<Object>(body, headers); 

ResponseEntity<AccountBalance> responseEntity = restTemplate.exchange(bitstampBalanceUrl, HttpMethod.POST, 
       requestEntity, AccountBalance.class); 
2

Вы должны использовать restTemplate.exchange

пример:

List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>(); 
acceptableMediaTypes.add(MediaType.APPLICATION_JSON);// or any other 

HttpHeaders headers = new HttpHeaders(); 
headers.setAccept(acceptableMediaTypes); 

HttpEntity<String> requestEntity = new HttpEntity<String>("name=XX&password=XX",headers); 
ResponseEntity<Response> responseEntity = restTemplate.exchange("URL", HttpMethod.POST, requestEntity, Response.class); 
+0

Все еще не работает правильно :-( – user1089362

+0

Я не понимаю, почему это не работает. Потому что, когда я использую этот метод (запрос POST): http://www.mkyong.com/java/how-to-send-http-request-getpost-in -java/ Тогда он работает отлично. Можно ли это сделать с resttemplate? – user1089362

+0

поделитесь своим кодом, пожалуйста, это может быть тип контента ... или что-то еще, поделиться тем, что вы пытаетесь сделать –

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