Сбой запроса POST при использовании libcurl, C ++ - PullRequest
0 голосов
/ 24 марта 2020
TEST(ApiTest, TestPostMethod) {
  CURL *curl;
  CURLcode res;
  curl_global_init(CURL_GLOBAL_ALL);
  curl = curl_easy_init();
  if (curl) {
    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
    std::string url = "https://postman-echo.com/post";
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
    curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
    struct curl_slist *headers = NULL;
    // curl_slist_append(headers, "HOST:  postman-echo.com");
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
    res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
    ASSERT_EQ(CURLE_OK, res);
  }
}

Ошибка: CURLE_COULDNT_RESOLVE_HOST (6)

Когда я проверял этот запрос POST на почтальоне, он работал как ожидалось. Также работает команда curl curl --location --request POST 'https://postman-echo.com/post'.

Expected equality of these values:
  CURLE_OK
    Which is: 0
  res
    Which is: 6

Запустите NSLOOKUP, как предложено @Andreas Wenzel

> postman-echo.com
Server:     75.75.75.75
Address:    75.75.75.75#53

Non-authoritative answer:
Name:   postman-echo.com
Address: 3.210.84.203
Name:   postman-echo.com
Address: 52.22.211.29

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Извините. Я понял это. Мой сервер, на котором я работал, имеет ограничения на соединение с внешним миром. Спасибо всем за внимание.

0 голосов
/ 24 марта 2020

https://github.com/alexzk1/ed_highway/blob/master/utils/restclient.cpp

Это работает для многих сайтов в последние 3-4 года. Вы можете выбрать только эти 2 файла. Он использует CURLOPT_POSTFIELDS для публикации.

Кстати, в своем коде вы выполняете перенаправления, вы уверены, что веб-сайт не перенаправляет вас на несуществующую ссылку?

...