curlib пишет на консоль [дубликат]

Примером этого исключаемого исключения является: Когда вы пытаетесь проверить что-то, это null.

Например:

string testString = null; //Because it doesn't have a value (i.e. it's null; "Length" cannot do what it needs to do)

if (testString.Length == 0) // Throws a nullreferenceexception
{
    //Do something
} 

Время выполнения .NET исключение NullReferenceException при попытке выполнить действие над чем-то, что не было инстанцировано, т.е. код выше.

По сравнению с ArgumentNullException, которое обычно выбрано как защитная мера, если метод ожидает, что то, что происходит

Дополнительная информация находится в C # NullReferenceException и Null Parameter .

10
задан bernie 11 May 2010 в 23:57
поделиться

3 ответа

Установите параметры CURLOPT_WRITEFUNCTION и / или CURLOPT_WRITEDATA:

FILE *f = fopen("target.txt", "wb");
curl_easy_setopt(handle, CURLOPT_WRITEDATA, f);

По умолчанию libcurl записывает вывод в stdout. Когда вы переопределяете это (это то, что почти любое приложение будет делать), он будет записывать в другой файл или передавать куски вывода на обратный вызов. Подробнее см. Документацию для CURLOPT_WRITEFUNCTION .

11
ответ дан Daniel Stenberg 28 August 2018 в 04:39
поделиться
  • 1
    Спасибо, но я это знаю. Нет пути без «отклонения». выход (способ удалить его)? – stdio 12 May 2010 в 00:41
  • 2
    @stdio. Если вы просто хотите, чтобы вход ушел, откройте устройство NULL и распечатайте все. – Tim Post♦ 12 May 2010 в 01:27
  • 3
    @Tm Сообщение: вы имеете в виду / dev / null? если вы имеете в виду это, код не будет мультиплатформенным. – stdio 12 May 2010 в 01:48
  • 4
    FILE * devnull = fopen ("nul", "w"); curl_easy_setopt (curl, CURLOPT_WRITEDATA, devnull); – Alexx Roche 19 November 2015 в 16:55

Как Joey сказал , CURLOPT_WRITEFUNCTION позволит вам полностью игнорировать весь вывод. Просто настройте обратный вызов, который абсолютно ничего не делает, если вы хотите, чтобы данные просто уходили, не записываясь ни в какой дескриптор файла.

Например,

/* Never writes anything, just returns the size presented */
size_t my_dummy_write(char *ptr, size_t size, size_t nmemb, void *userdata)
{
   return size * nmemb;
}

Затем в вашем options:

curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, &my_dummy_write);

Или, укажите дескриптор файла на NULL-устройстве (намного проще).

6
ответ дан Community 28 August 2018 в 04:39
поделиться

Использовать CURLOPT_NOBODY в curl_easy_setopt (). Пример:

 ...

CURL *curl;
CURLcode statusCode;

curl = curl_easy_init();
if(curl){
    curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com/");
    //CURLOPT_NOBODY does the trick
    curl_easy_setopt(curl, CURLOPT_NOBODY, 1);
    curl_easy_perform(curl);

 ...

Ссылка на документы: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTNOBODY

22
ответ дан Paul Semionov 28 August 2018 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: