Как добавить тело в Spring Boot RestTemplate Положить запрос с заголовками [duplicate]

9
задан Thilina Sampath 20 October 2015 в 17:14
поделиться

1 ответ

Вы можете попробовать что-то вроде:

    final String url = String.format("%s/api/shop/{id}", Global.webserviceUrl);

    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

    HttpHeaders headers = new HttpHeaders();
    headers.set("X-TP-DeviceID", Global.deviceID);
    Shop shop= new Shop();
    Map<String, String> param = new HashMap<String, String>();
    param.put("id","10")
    HttpEntity<Shop> requestEntity = new HttpEntity<Shop>(shop, headers);
    HttpEntity<Shop[]> response = restTemplate.exchange(url, HttpMethod.PUT, requestEntity, Shop[].class, param);

    shops = response.getBody();

put возвращает void, тогда как обмен получит ответ, лучшим местом для проверки будет документация https: //docs.spring. И.О. / весна / Docs / ток / Javadoc-апи / орг / springframework / веб / клиент / RestTemplate.html

16
ответ дан cpd214 17 August 2018 в 16:26
поделиться
  • 1
    Я предполагаю, что я должен использовать requestEntity вместо объекта в качестве параметра обмена? Кроме того, почему id is hasmap, вы имеете в виду возможные множественные параметры URL? – user1209216 20 October 2015 в 17:34
  • 2
    да, для нескольких параметров URL. Я думаю, что есть перегруженная версия, которая не требует карты, вы можете напрямую передать параметр url, а также параметр запроса (при необходимости). обновил ответ с requestEntity вместо сущности. – cpd214 20 October 2015 в 17:49
  • 3
    Отличный ответ! Я знаю, что это незначительная вещь, но, пожалуйста, исправьте эту строку: param.put («id», «10»), поскольку это отличается от простых символов кавычек, я просто скопировал код в редактор и показал, что эти символы разные. – Szilárd Németh 31 August 2017 в 08:36
Другие вопросы по тегам:

Похожие вопросы: