Используйте curl с веб-страницей без протокола безопасности - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть веб-страница: 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? И если да, то какие настройки мне нужно настроить?

1 Ответ

0 голосов
/ 06 февраля 2020

Я решил свою проблему, переключившись на curl-7.55.1. Ранее я использовал curl-7.68.0. Я не уверен, была ли удалена эта функциональность или если она более активна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...