Как реализовать HTTP-запрос POST с помощью Spring RestTemplate - PullRequest
0 голосов
/ 23 апреля 2019

Я должен сделать этот запрос с помощью resttemplate.ключ действителен, и другой (GET) запрос успешно реализован.Но с этим у меня проблема

response = Unirest.post("https://skyscanner-skyscanner-flight-search-v1.p.rapidapi.com/apiservices/pricing/v1.0")
        .header("X-RapidAPI-Host", "skyscanner-skyscanner-flight-search-v1.p.rapidapi.com")
        .header("X-RapidAPI-Key", "somekey")
        .header("Content-Type", "application/x-www-form-urlencoded")
        .field("country", "US")
        .field("currency", "USD")
        .field("locale", "en-US")
        .field("originPlace", "MSQ-sky")
        .field("destinationPlace", "DME-sky")
        .field("outboundDate", "2019-05-01")
        .field("adults", 1)
        .asJson();
response.getHeaders();

Я пытаюсь, но я всегда получаю 401

HttpHeaders headers = new HttpHeaders();
headers.set("X-RapidAPI-Host", "skyscanner-skyscanner-flight-search-v1.p.rapidapi.com");
headers.set("X-RapidAPI-Key", RAPID_API_KEY);
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("country", "US");
map.add("currency", "USD");
map.add("locale", "en-US");
map.add("originPlace", "MSQ-sky");
map.add("destinationPlace", "DME-sky");
map.add("outboundDate", "2019-05-01");
map.add("adults", "1");
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
ResponseEntity<ObjectNode> resp = restTemplate.exchange(url, HttpMethod.POST, request, ObjectNode.class);

Где ошибка?
ОБНОВЛЕНО Этозапрос не работает в SPRING 5, весной 4 его работает.

1 Ответ

1 голос
/ 23 апреля 2019

Когда вы создаете запрос HttpEntity, вы должны передавать заголовки в качестве второго аргумента 1 :

HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
...