2016-11-04 2 views
0

Я пытаюсь использовать 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; 
} 
+0

Что такое ситуация с hackathon *? –

+0

Как в «Я сейчас в хакатоне». Я отредактирую исходный пост, если он будет полезен, чтобы помочь читателям определить ответ. – StoneThrow

+0

C++ на самом деле не лучший язык для подобных вещей, он не очень прощает, но если вы решились, посмотрите [раздел о паролях в документации] (https://curl.haxx.se/libcurl /c/libcurl-tutorial.html). – tadman

ответ

1

Вы пытаетесь получить доступ к защищенный веб-сайт, он не будет работать, если вы не используете защищенное гнездо (443) протокол ,

Попробуйте использовать CURLOPT_USE_SSL, например.

curl_easy_setopt(curl, CURLOPT_USE_SSL, "https://confluence/pages/viewpage.action?pageId=42"); 
+0

Это тоже не сработало, но все в порядке. Я думаю, что у меня есть домашнее задание, и, возможно, это не самый подходящий вопрос для StackOverflow. Спасибо за предложение помочь. – StoneThrow

Смежные вопросы