Как использовать RestTemplate, чтобы получить результат в списке и поместить ответ в список? - PullRequest
0 голосов
/ 06 августа 2020

Привет, чего я пытаюсь достичь, так это использовать другой API и поместить некоторые данные ответа в список в моей функции с помощью RestTemplate, вот как выглядит мой код:

@PostMapping("/save-new")
public ResponseEntity<ShipmentAddressGrouping> saveNewShipmentAddressGrouping(@Valid @RequestBody InputRequest<ShipmentAddressGroupingDto> request) {
    String url = baseUrl + "/load-list";

    HttpEntity<PartnerShipmentDto> requestPartnerShipmentDto = new HttpEntity<>(new PartnerShipmentDto());
    RestTemplate restTemplate = new RestTemplate();
    List<PartnerShipmentDto> partnerShipmentDto = restTemplate.postForObject(url, requestPartnerShipmentDto, new ParameterizedTypeReference<List<PartnerShipmentDto>>() {});

    ShipmentAddressGrouping newShipmentAddressGrouping = shipmentAddressGroupingService.save(request);
    return ResponseEntity.ok(newShipmentAddressGrouping);

}

как вы можете видеть Я пытаюсь получить ответ в List, который я пытаюсь здесь restTemplate.postForObject(url, requestPartnerShipmentDto, new ParameterizedTypeReference<List<PartnerShipmentDto>>() {});

, но я получил ошибку, подчеркнутую в restTemplate.postForObject, которая выглядит следующим образом:

Метод postForObject (String, Object, Class, Object ...) в типе RestTemplate неприменимо для аргументов (String, HttpEntity, new ParameterizedTypeReference () {})

Что следует изменить чтобы исправить это?

1 Ответ

2 голосов
/ 06 августа 2020

Если вы хотите использовать ParameterizedTypeReference<T>, вам нужно использовать RestTemplate.exchange(), поскольку это единственный метод, который предоставляет параметр типа ParameterizedTypeReference<T>.

List<PartnerShipmentDto> partnerShipmentDto = restTemplate.exchange(url, 
                HttpMethod.GET, 
                requestPartnerShipmentDto,
                new ParameterizedTypeReference<List<PartnerShipmentDto>>() {})
        .getBody();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...