2015-08-09 3 views
4

Я пытаюсь запустить простой пример с помощью libcurl, но просто запуск этого простого примера дает мне CURLE_WRITE_ERROR при выполнении команды curl_easy_perform(...). Кто-нибудь знает, что я делаю неправильно? Я также пробовал другие сайты, кроме example.com.CURL - простой пример, возвращающий «CURLE_WRITE_ERROR»

CURL *curl = curl_easy_init(); 

if(curl) 
{ 
    CURLcode res; 
    curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/"); 
    res = curl_easy_perform(curl); // returns CURLE_WRITE_ERROR always! 
    curl_easy_cleanup(curl); 
} 
+0

И где должна CURL записывать полученные данные? –

+1

Спасибо за быстрый ответ. Честно говоря, не уверен, какие данные он должен получить, или если я даже ожидал данных. Просто хотел выполнить простой пример «ping the server» для тестирования libcurl. – eddietree

+1

Это все код? По умолчанию libcurl использует 'fwrite' для записи в' STDOUT'. – Aldehir

ответ

3

OK Оказывается, Иоахим прав. Мне действительно нужен обратный вызов

size_t CurlWriteCallback(char* buf, size_t size, size_t nmemb, void* up) 
{ 
    TRACE("CURL - Response received:\n%s", buf); 
    TRACE("CURL - Response handled %d bytes:\n%s", size*nmemb); 

    // tell curl how many bytes we handled 
    return size*nmemb; 
} 

// ... 

CURL *curl = curl_easy_init(); 

if(curl) 
{ 
    CURLcode res; 
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &CurlWriteCallback); 
    curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/"); 
    res = curl_easy_perform(curl); 
    curl_easy_cleanup(curl); 
} 
+1

У меня была та же проблема, и «простой» пример из libcurl не указывает это на свой код. Спасибо. – KuramaYoko