Фэндом


curl_easy_setopt - Устанавливает параметр для curl easy handle

Синтаксис Править

#include <curl/curl.h>
 
CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);

Описание Править

curl_easy_setopt используется для задания libcurl соответствующего поведения через установку опций. Опции определяются парой аргументов option и parameter. В зависимости от опции, тип данных для аргумента parameter может быть long, указателем на функцию, указателем на объект или curl_off_t. Внимательно прочитайте данное руководство, так как неправильные входные значения могут привести к некорректной работе libcurl! Вы можете установить только одну опцию за один вызов функции. Обычно используют множество вызовов curl_easy_setopt для установки всех необходимых опций.

Установленные вызовом этой функции опции действительны для всех последующих передач, которые осуществляются с помощью дескриптора handle. Опции не сбрасываются после выполнения передачи, поэтому если для дальнейших передач вы хотите использовать другую комбинацию опций, вам необходимо их изменить явным образом. Возможен сброс всех опций в значение по умолчанию с помощью вызова curl_easy_reset().

Строки, которые передаются в libcurl как аргументы с типом char*, копируются библиотекой, поэтому после возврата из curl_easy_setopt можно их использовать для собственных нужд. Исключения из этого правила приведены в подробном описании опций.

Дескриптор handle можно получить вызовами curl_easy_init() и curl_easy_duphandle().

Опции Править

Здесь перечислены только самые распространенные параметры, для получения полного списка см. статью curl_easy_setopt параметры.

CURLOPT_URL Править

Тип аргумента: char* строка с терминальным нулем

Определяет URL, с которым будет работать Libcurl. Это единственный параметр, который обязательно должен быть определен перед вызовом curl_easy_perform. Отправляемая в параметр строка должна быть закодирована, следуяRFC 2396.

Если в этом URL отсутствует описание протокола ("http://", "ftp://" и т.д.), библиотека будет пытаться сама определить, какой протокол нужно использовать, опираясь на имя данного хоста. Если протокол заданный в URL не поддерживается, Libcurl вернет ошибку (CURLE_UNSUPPORTED_PROTOCOL) при вызове curl_easy_perform или curl_multi_perform. Используйте curl_version_info для подробной информации о поддерживаемых протоколах. Параметр CURLOPT_PROTOCOLS может быть использован для ограничения набора протоколов Libcurl, которые будут использованы для этой передачи, независимо от того, какие протоколы поддерживает Libcurl. Это может быть удобно, если вы принимаете URL из внешнего источника и хотите ограничить доступ к библиотеке.

CURLOPT_VERBOSE Править

Тип аргумента: long

Установите в параметр 1, чтобы позволить библиотеке подробно отображать информацию о ходе работы. Подробные сведения будут отправлены на STDERR, или в поток установленный параметром CURLOPT_STDERR.

Хотя этот параметр вряд ли пригодится в release версии вашего продукта, его можно эффективно использовать при отладке или составлении отчета об ошибке. Еще одна полезная опция для отладки - CURLOPT_DEBUGFUNCTION.

CURLOPT_WRITEFUNCTION Править

Тип аргумента: Указатель на функцию, которая должна соответствовать следующему прототипу: size_t function( void* ptr, size_t size, size_t nmemb, void* userdata);.

Эта функция вызывается в Libcurl, как только есть полученные данные, которые должны быть сохранены. Размер данных, на которую указывает аргумент ptr является size*nmemb. Получаемые данные не имеют терминальный ноль. Задаваемая функция должна возвращать количество обработанных байт. Если эта сумма будет отличаться от суммы, полученной на входе вашей функции, то будет отдан сигнал об ошибке в библиотеке. Это можно использовать для прервания передачи, с возвращемым значениемCURLE_WRITE_ERROR.

Функция может вернуть значение CURL_WRITEFUNC_PAUSE, которое приведет к приостановке записи в этом соединении. См. curl_easy_pause для более подробной информации.

Эта функция может быть вызвана с нулевым размером данных, если получаемые данные отсутствуют.

Установите этот параметр в NULL, чтобы определить встроенную функцию по умолчанию. Эта функция будет записывать данные в FILE* полученный из CURLOPT_WRITEDATA.

Установить значение в userdata можно параметром CURLOPT_WRITEDATA.

В функцию обратного вызова будет передаваться максимально возможное количество данных во всех вызовах, но это количество невозможно узнать заранее. Максимальный объем данных, который может быть передан в функцию записи, определен в заголовочном файле curl.h, как CURL_MAX_WRITE_SIZE.

CURLOPT_WRITEDATA Править

Тип аргумента: указатель void*, определяемый разработчиком, по умолчанию FILE*

Если вы используете параметр CURLOPT_WRITEFUNCTION, то этот указатель вы получите в качестве аргумента в callback функции. Встроенная функция в CURLOPT_WRITEFUNCTION будет записывать данные в поток FILE*, заданный этим параметром, или в stdout, если этот параметр не был установлен.

Если вы используете Libcurl в Win32 DLL, вы обязательно должны переопределить CURLOPT_WRITEFUNCTION, если вы используете этот параметр, иначе Libcurl будет некорректно работать.

Этот параметр также известен под старым названием CURLOPT_FILE.

CURLOPT_NOPROGRESS Править

Выключить индикатор выполнения.

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff);

Возвращаемое значение Править

CURLE_OK (ноль) означает, что вариант был установлен корректно, не ноль означает ошибку, код которой определен в <curl/curl.h>. См. в полный список с описаниями в ошибки libcurl.

Если вы попытались установить параметр, о котором Libcurl не знает, то возможно, версия вашей библиотеки слишком старая, или параметр был удален в последней версии. Функция в этом случае будет возвращать CURLE_FAILED_INIT.

См. также Править

curl_easy_init curl_easy_cleanup curl_easy_reset

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на Фэндоме

Случайная вики