#c #curl #libcurl
#c #curl #libcurl
Вопрос:
Попытка просто получить html-данные с веб-сайта с помощью библиотеки libcurl, но curl_easy_perform() не возвращает данные. Я использую тот же код из этого видео: https://www.youtube.com/watch?v=Uha3JGPRIQs .
#include <iostream>
#include <curl/curl.h>
using namespace std;
int main(void)
{
CURL *curl; // Handle to a transfer
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL); // initialization
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
res = curl_easy_perform(curl);
if (res != CURLE_OK)
cout << "ERROR";
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
Этот код выводит «ОШИБКУ» из этой строки: if (res != CURLE_OK). Если кто-нибудь может помочь мне понять, почему он это делает, я был бы очень признателен, спасибо.
Комментарии:
1. Каково фактическое значение
res
? Это скажет вам, ПОЧЕМУcurl_easy_perform()
происходит сбой. Вы уже прочитали документацию ? »CURLE_OK
(0) означает, что все было в порядке, ненулевое значение означает, что произошла ошибка , как<curl/curl.h>
определено — см. libcurl-ошибки . ЕслиCURLOPT_ERRORBUFFER
было установлено значение сcurl_easy_setopt
, в буфере ошибок при возврате ненулевого значения будет отображаться читаемое сообщение об ошибке «.2. То, что часто приводит к сбою, заключается в том, что сайты перенаправляют страницы на другие страницы, и в этом случае вам нужно
CURLOPT_FOLLOWLOCATION
. В некоторых случаях вы можете находиться за прокси-сервером, и в этом случае вам также может понадобитьсяCURLOPT_HTTPPROXYTUNNEL
. Вы также можете сделать вывод немного более подробным, чтобы вы могли следить за тем, что он делает, установивCURLOPT_VERBOSE
3. @TedLyngmo спасибо, я думаю, что многие сайты не работают с этой программой. Проблема в том, что example.com URL-адрес не содержит https, поэтому я избавился от этого, и теперь он работает.
4. @PatrickAliberti О, здорово 🙂