У меня есть веб-страница: 10.1.1.165, с которой я пытаюсь получить данные. Я построил эту программу в linux, и она отлично работает, однако при разработке для систем windows у меня возникает проблема.
if (filename.substr(filename.length() - 4, 4) == "html" || filename.substr(filename.length() - 3, 3) == "htm")
{
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
string s;
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL, filename.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
if (gLogger->isDebug()) curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout/1000);
//curl_easy_setopt (curl, CURLOPT_VERBOSE, 1L); //remove this to disable verbose output
// Perform the request, res will get the return code
res = curl_easy_perform(curl);
// Check for errors
if (res != CURLE_OK)
{
while (res == CURLE_OPERATION_TIMEDOUT)
{
res = curl_easy_perform(curl);
}
if (res != CURLE_OK)
{
gLogger->error("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
curl_easy_cleanup(curl);
return -1;
}
}
curl_easy_cleanup(curl);
В моей системе linux это работает отлично. В моей Windows системе я получаю: curl_easy_perform () fail: Неподдерживаемый протокол. Если я go захожу на мою веб-страницу 10.1.1.165, я вижу, что она размещена без защиты. У меня нет возможности изменить способ размещения этой веб-страницы.
Для этого ресурса: https://curl.haxx.se/libcurl/c/CURLOPT_PROTOCOLS.html
По умолчанию libcurl принимает все протоколы
Кто-нибудь знает, почему Керлу не нравится, что я перехватываю эту веб-страницу на windows? И если да, то какие настройки мне нужно настроить?