Я пытаюсь использовать libcurl (связанный с программой на C++) в первый раз и нуждаюсь в помощи на начальном уровне. Я также в значительной степени не знаком с HTTP/HTML и т. Д., Поэтому, пожалуйста, простите меня, если моя терминология опровергает это.Запрос начального уровня с использованием libCurl API
Использование исполняемого файла curl
, если выполнить следующее ...
curl -k -u user:password https://confluence/pages/viewpage.action?pageId=42
... Я получаю то, что выглядит как законным содержание веб-страницы.
Я хотел бы сделать то же самое с моей программы на C++, используя libcurl.
Я начал с минимальной модификацией базового примера, публикуемую в https://curl.haxx.se/libcurl/c/simple.html:
#include <iostream>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "https://confluence/pages/viewpage.action?pageId=42");
res = curl_easy_perform(curl);
if(CURLE_OK == res) { std::cout << "curl success" << std::endl; }
else { std::cout << "curl failure" << std::endl; }
curl_easy_cleanup(curl);
}
return 0;
}
Этот код приводит к выходу:
curl failure
Может кто-нибудь наставит меня о том, как я могу программно сделать что я сделал раньше с исполняемым curl? Есть некоторые очевидные недостатки в моем примере кода, т. Е. Отсутствие имени пользователя и пароля, поэтому я буду признателен за любые рекомендации в правильном направлении. Спасибо.
Update
Поэтому я использовал опцию -k
при выполнении завиток исполняемым потому, что запуск команды без -k
не приводила к содержанию веб-страницы, возвращаемых завитка. Я просто попытался добавить -k
на основе текста справки и заметил, что он сработал. Извините за недостаток понимания и способность объяснять. Я был бы признателен, если бы ответчик мог затронуть и эти темы, чтобы помочь мне понять.
Обновление и закрытие
Я немного смущен, что я обратился к StackOverflow без немного больше усилий с моей стороны - извинениями к сообществу для этого бедного вопроса.
The (небезопасные) решение, от только немного локтя консистентной смазки:
#include <iostream>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "https://confluence/pages/viewpage.action?pageId=42");
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
res = curl_easy_perform(curl);
if(CURLE_OK == res) { std::cout << "curl success" << std::endl; }
else { std::cout << "curl failure" << std::endl; }
curl_easy_cleanup(curl);
}
return 0;
}
Что такое ситуация с hackathon *? –
Как в «Я сейчас в хакатоне». Я отредактирую исходный пост, если он будет полезен, чтобы помочь читателям определить ответ. – StoneThrow
C++ на самом деле не лучший язык для подобных вещей, он не очень прощает, но если вы решились, посмотрите [раздел о паролях в документации] (https://curl.haxx.se/libcurl /c/libcurl-tutorial.html). – tadman