Booleans Numeric Strings Filenames Lists FormData Callbacks Events

Свойства класса tCurl

Примечание: Большинство нижеприведённых свойств являются обёртками различных вызовов curl_easy_setopt().

Библиотека libcurl не предоставляет доступ "на чтение" к установленным опциям!

Обёртка tCurl хранит копию настроек для эмуляции доступа на чтение и запись, и хотя она старается инициализировать внутренние поля разумными значениями,
учитывайте, что свойство может быть "не определено" до явного присвоения ему значения.

Например, хотя дефолтное значение tCurl.Port ноль, передача по протоколу http будет пытаться использовать порт 80, если не указано обратное.

Логические свойства
AutoReferer: boolean
TRUE включает автоматическую установку значения поля referer при перенаправлении.
Примечание: tCurl автоматически устанавливает значение этого свойства в TRUE, что не соответствует дефолтному значению в библиотеке.
CookieSession: boolean
TRUE пометит эту передачу как начало cookie сессии.
CrLf: boolean
TRUE включит конвертацию символов конца строки из стандарта Unix в стандарт DOS при отправке файла по FTP. ( LF в CRLF )
DnsUseGlobalCache: boolean
TRUE велит curl использовать глобальный DNS-кэш, который сохраняется после создания/удаления easy-сессий.
Не является потокобезопасной, так как использует глобальную переменную.
FailOnError: boolean
TRUE указывает библиотеке прекращать передачу при получении HTTP-кода, большего или равного 300.
Действие "по-умолчанию" - получить документ (возможно - страницу сообщения об ошибке), игнорируя код.
FollowLocation: boolean
TRUE разрешает библиотеке обрабатывать заголовок Location: в ответе от сервера.
Это означает, что будут осуществляться последовательные переходы по адресу в поле Location: до тех пор, пока такое поле не прекратит появляться в ответе сервера.
Примечание: tCurl автоматически устанавливает это свойство в TRUE, это отличается от настроек библиотеки "по-умолчанию".
tCurl.MaxRedirs может использоваться для ограничения количества таких переходов.
ForbidReuse: boolean
TRUE - каждая следующая передача будет закрывать соединение по окончании. Обычно, libcurl держит все соединения открытыми, и повторно использует их для последующих передач. Эта опция должна использоваться с осторожностью! Установите это свойство в FALSE чтобы позволить libcurl держать соеднинение открытым для возможного повторного использования (поведение по-умолчанию).
FreshConnect: boolean
TRUE - следующая передача будет обязательно использовать новое (свежее) соединение . Если кэш соединений уже заполнен перед передачей, то одно из существующих соединений будет закрыто в соответствии с выбранной или дефолтной политикой. Этой опцией надо пользоваться осторожно! Установите FALSE чтобы libcurl пытался повторно использовать существующее соединение (поведение по-умолчанию).
FtpAppend: boolean
TRUE - включает режим дописывания файла при FTP-передаче вместо режима перезаписи. Использовать только при загрузке файла на FTP сервер.
FtpListOnly: boolean
TRUE - включает короткие листинги FTP (т.е. только имена, без размеров, дат и т.п.)
FtpSkipPasvIp: boolean
TRUE - инструктирует libcurl не использовать IP адрес, предлагаемый сервером в ответе 227 на команду libcurl PASV при установлении соединения для данных. Вместо этого будет использовать тот IP, который уже используется для соединения комманд, а порт - из ответа 227.
Эта опция не работает, если использовались комманды PORT, EPRT или EPSV, а не PASV.
FtpUseEprt: boolean
TRUE - разрешает использование комманд EPRT (и LPRT) для активных FTP скачиваний
(режим FTP включается через свойство tCurl.FtpPort).
При разрешённом EPRT библиотека сначала попробует EPRT, а затем LPRT, до попытки использовать PORT,
однако при запрещённом EPRT (FtpUseEprt := FALSE), библиотека даже не будет пытаться использовать EPRT и LPRT, только классический PORT. По-умолчанию EPRT и LPRT разрешены.
FtpUseEpsv: boolean
TRUE - разрешает использование EPSV для пассивных FTP скачиваний (режим по-умолчанию). При разрешённом EPSV библиотека сначала попробует EPSV до попытки использовать PASV, однако при запрещённом EPSV будет использоваться только PASV.
Header: boolean
TRUE - включает заголовок в выдачу. Имеет смысл только для протоколов, имеющих заголовки перед данными (типа HTTP).
HttpGet: boolean
TRUE - переключает режим HTTP-запросов на GET (режим по-умолчанию). Используется после POST, PUT или иных запросов.
HttpProxyTunnel: boolean
TRUE - включает туннелирование всех операций через HTTP прокси. Использование прокси и туннелирование всех данных через него - две большие разницы. Если вы этого не понимаете - не трогайте эту настройку!
IgnoreContentLength: boolean
TRUE - инструктирует библиотеку игнорировать поле Content-Length в заголовке HTTP ответов.
Полезно для Apache версий 1.x (и ему подобных), которые сообщают неверную длину файлов больше 2 Гб.
При использовании этой опции, curl не сможет аккуратно отражать прогресс передачи, и остановится только тогда, когда сервер закроет соединение.
NoBody: boolean
TRUE - исключает тело ответа из выдачи. Используется только для протоколов, в которых есть разделение на заголовок и тело ответа.
NoProgress: boolean
TRUE - отключает встроенный в библиотеку индикатор прогресса. ПРИМЕЧАНИЕ: в будущих версиях libcurl встроенный индикатор, скорее всего, будет отсутствовать.
NoSignal: boolean
Имеет смысл только в Unix-ах
If TRUE, libcurl will not use any functions that install signal handlers or any functions that cause signals to be sent to the process.
This option is mainly here to allow multi-threaded unix applications to still set/use all timeout options etc, without risking getting signals.
Post: boolean
Устарело! Не использовать!
  ( см. tCurl.PostFields )
RequestFileTime: boolean
TRUE - libcurl будет пытаться выяснить дату модификации получаемого документа.
Чтобы это работало, удалённый сервер должен посылать такую информацию или отвечать на запросы такой информации.
Функция tCurl.FileTime может быть использована для извлечения этой информации после передачи (если, конечно, есть что извлекать).
SslEngineDefault: boolean
Шут его значет, что это такое
Sets the actual crypto engine as the default for (asymetric) crypto operations.
NOTE: If the crypto device cannot be set, tCurl.ResultCode will be set to CURLE_SSL_ENGINE_SETFAILED.
SslVerifyPeer: boolean
FALSE - отключает проверку SSL-сертификата.
( Начиная с версии libcurl 7.10 значение по-умолчанию TRUE).
Альтернативные сертификаты для проверки могут быть указаны с помощью свойства tCurl.CAInfo,
либо можно указать центр сертификации с помощью свойства tCurl.CAPath.
Библиотека libcurl версии 7.10 и старше устанавливает свой пакет сертификатов.
Также может потребоваться установить значение SslVerifyHost в CURL_VERIFY_NONE или CURL_VERIFY_EXIST если SslVerifyPeer установлено в FALSE.
( SslVerifyHost по-умолчанию установлен в CURL_VERIFY_MATCH )
TcpNoDelay: boolean
TRUE - отключает алгорим Nagle для TCP.
Цель этого алгоритма - минимизировать количество маленьких пактов в сети
(где под "маленькими" пакетами подразумеваются TCP сегменты короче Maximum Segment Size (MSS) для этой сети).
Максимизация объёма данных на TCP сегмент - это хорошо, так как амортизирует издержки на посылку.
Однако, в некоторых случаях (в частности - протоколы telnet и rlogin) может потребоваться быстрая отсылка маленьких пакетов.
Это менее эффективно, чем посылка данных большими кусками, и может привести к перегрузке сети.
Изменение этой настройки после установки соединения ничего не даст.
TransferText: boolean
TRUE - включает ASCII режим для FTP передач, вместо бинарного режима по-умолчанию.
В win32 системах stdout не переключается в бинарный режим.
Эиа опция может быть полезна при передаче текстовых данных между системами, обладающими разными взглядами на некоторые символы, в частномти - на "конец строки".

ПРИМЕЧАНИЕ: libcurl не выполняет полного ASCII-преобразования при передаче ASCII данных по FTP.
Это не бага, а фича. (с)
Libcurl просто устанавливает режим в ascii и выполняет стандартную передачу.
UnrestrictedAuth: boolean
TRUE разрешает библиотеке передавать данные аутентификации (логин+пароль) при
переадресации, даже при смене имени сервера (hostname).
Эта опция имеет смысл только если tCurl.FollowLocation также установлено в TRUE
Upload: boolean
TRUE - подготавливает библиотеку к отдаче (файла).
См. также tCurl.Inputfile и tCurl.InfileSize.
Если протокол - HTTP, то отдача обозначает метод PUT, если не указано обратное.

Использование PUT с HTTP/1.1 подразумевает использование заголовка 'Expect: 100-continue'.
Этот заголовок может быть отключен с помощью свойства tCurl.HttpHeader.

При использовании PUT с HTTP/1.1 сервером при использовании chunked кодирования, можно отдавать данные, не зная заранее их полный объём.
Chunkel кодирование включается путём добавления поля вида 'Transfer-Encoding: chunked' в свойство tCurl.HttpHeader.

С HTTP/1.0   ( или 1.1 без chunked передачи )   нужно указывать tCurl.Inputfile и/или tCurl.InfileSize.
Verbose: boolean
TRUE включает вывод библиотекой большого количества подробнейшей информации о своих операциях.
Очень полезно для отладки и понимания libcurl и/или протоколов..
Вряд ли Вам это когда-либо понадобится, почти всегда это будет использоватся для отладки.
Назначение обработчика событию OnDebug автоматически устанавливает Verbose в TRUE.


Числовые и перечисляемые свойства
BufferSize: LongInt
Задаёт предпочтительный размер приёмного буфера libcurl.
Основная цель такой настройки - вызывать функцию записи чаще и с меньшими фрагментами данных.
Это только запрос, не приказ. Никто не может гарантировать, что буфер будет именно такого размера.
ClosePolicy: curl_closepolicy
Эта опция контролирует поведение libcurl когда кэша соединений заполнен, и - как следствие - открытое соединение должно быть закрыто для установления нового.
Может принимать одно из следующих значений::
CURLCLOSEPOLICY_LEAST_RECENTLY_USED - закрыть соединение, к котором дольше всего не обращались.
CURLCLOSEPOLICY_OLDEST - закрыть соединение, установленное раньше всех остальных.
Остальные политики сейчас не поддерживаются.
ConnectTimeout: LongInt
Максимальное время ответа сервера при соединении.
После установки соединения эта опция больше не используется.
Установите в ноль для отключения таймаута соединения (при этом системный таймауты не отменяются).
См. также tCurl.Timeout.
ПРИМЕЧАНИЕ: не рекомендутеся использовать в многопоточных unix-приложениях, так как используются сигналы.
( Кроме случаев когда tCurl.NoSignal установлен в TRUE )
DnsCacheTimeout: LongInt
Время (в секундах), в течении которого результат успешного DNS-запроса будет сохранён в кеше..
Ноль (0) отключает кеширование, -1 делает хранение вечным.
Значение по-умолчанию: 60 секунд.
Encoding: CurlEncoding
Требует, чтобы сервер закодировал свой ответ. Поддерживаются две кодировки::
  CURL_ENCODING_DEFLATE: требует, чтобы сервер сжал ответ с помощью алгоритма zlib,
  CURL_ENCODING_IDENTITY: ничего не требует.
Это не приках, сервер может и не послушать Вас.
Подробности в файле lib/README.encoding в исходниках libcurl.
FtpResponseTimeout: LongInt
Устанавливает время (в секундах) ожидания ответа от FTP сервера до того момента, когда сессия будет считаться зависшей.
Пока curl ждёт ответа, это значение имеет приортиет над свойством tCurl.Timeout.
Если это свойство используется совместно с tCurl.Timeout, величина tCurl.FtpResonseTimeout рекомендуется меньшей, чем tCurl.Timeout.
FtpAuth: curl_ftpauth
Меняет порядок отправки комманд "AUTH TLS" и "AUTH SSL" при активации FTP over SSL.
   CURLFTPAUTH_DEFAULT: Отдать на усмотрение libcurl.
   CURLFTPAUTH_SSL:      Сначала пробуется "AUTH SSL", в случае неудачи - "AUTH TLS"
   CURLFTPAUTH_TLS:      Сначала пробуется "AUTH TLS", в случае неудачи - "AUTH SSL"
(см. также: tCurl.FtpSsl:)
FtpSsl: curl_ftpssl
Устанавливает желаемый уровень SSL для FTP передач.
Поддерживаются следующие значения:
   CURLFTPSSL_NONE:    Не пытаться использовать SSL.
   CURLFTPSSL_TRY:     Попытаться включить SSL, но разрешить незащищённые передачи.
   CURLFTPSSL_CONTROL: Требовать SSL для контрольного соединения, в случае невозможности - вернуть ошибку CURLE_FTP_SSL_FAILED.
   CURLFTPSSL_ALL:     Требовать SSL для всех соединенийв случае невозможности - вернуть ошибку CURLE_FTP_SSL_FAILED.

Handle: pCURL
Доступ (только на чтение) к handle CURL сессии.
Это та самая вещь, которую возвращает i>curl_easy_init().
Доступ к этому handle требуется крайне редко, использовать с осторожностью!
HttpVersion: curl_http_version
Вынуждает libcurl использовать определённую версию протоколда HTTP.
не стоит использовать это свойство без особой нужды.
Возможные значения:
  CURL_HTTP_VERSION_NONE:  Библиотека будет использовать наиболее, по её мнению, подходящую версию.
  CURL_HTTP_VERSION_1_0:  Использовать только HTTP 1.0 запросы.
  CURL_HTTP_VERSION_1_1:  Использовать только HTTP 1.1 запросы.
InfileSize: LongInt
Эта опция позволяет указать размер файла (infile) при отдаче на удалённый сервер.
Значение автоматически устанавливается при указании имени файла в свойстве  tCurl.InputFile
LowSpeedLimit: LongInt
Скорость передачи (байт/с), которую не должна превышать скорость передачи в течении tCurl.LowSpeedTime секунд, для того, чтобы библиотека посчитала передачу слишком медленной и прервала её.
LowSpeedTime: LongInt
Время в секундах, в течении которого скорость передачи не должна превышать tCurl.LowSpeedLimit, для того, чтобы библиотека посчитала передачу слишком медленной и прервала её.
MaxConnects: LongInt
Устанавливает размер кэша соединений. Значение по-умолчанию: 5. Без нужды менять не рекомендуется.
MaxRedirs: LongInt
Устанавливает максимальное число переадресаций.
Превышение этого предела вызовет ошибку (CURLE_TOO_MANY_REDIRECTS).
Эта опция имеет смысл только если свойство tCurl.FollowLocation установлено в TRUE.
tCurl автоматически выставляет свойство MaxRedirs в 25.
В Windows не используется Netrc: CURL_NETRC_OPTION
This parameter controls the preference of libcurl between using user names and passwords from your ~/.netrc file, relative to user names and passwords in the URL supplied with CURLOPT_URL.
The value must be one of the following:
CURL_NETRC_OPTIONAL
The use of your ~/.netrc file is optional, and information in the URL is to be preferred. The file will be scanned with the host and user name (to find the password only) or with the host only, to find the first user name and password after that machine, which ever information is not specified in the URL. Undefined values of the option will have this effect.
CURL_NETRC_IGNORED
The library will ignore the file and use only the information in the URL. This is the default.
CURL_NETRC_REQUIRED
This value tells the library that use of the file is required, to ignore the information in the URL, and to search the file with the host only.

Notes:
libcurl uses a user name (and supplied or prompted password) supplied with CURLOPT_USERPWD in preference to any of the options controlled by this parameter.
Only machine name, user name and password are taken into account (init macros and similar things aren't supported).
libcurl does not verify that the file has the correct properties set (as the standard Unix ftp client does). It should only be readable by user.
PostFieldSize: LongInt
Устарело! Не использовать!
Цель обёртываемой опции CURLOPT_POSTFIELDSIZE состоит в том, чтобы позволить C-строкам содержать NULL-символы.
Однако тип ansistring может вполне легально содержать #0 символ, не опасаясь обрезания,
tCurl автоматически установит это свойство в Length(PostFields).
ProxyPort: LongInt
Порт прокси-сервера, игнорируется если порт установлен через свойство tCurl.Proxy.
ProxyType: curl_proxytype
Устанавливает тип прокси.
Поддерживаемые типы - CURLPROXY_HTTP и CURLPROXY_SOCKS5; CURLPROXY_HTTP используется по-умолчанию.
ResultCode: CurlCODE
Сожержит результат последней операции (установки опции либо передачи данных).
Примечание: Если установка свойства оканчивается неуспехом, последующие установки свойств и выховы методов будут проигнорированы.
Считываение свойства ResultCode очищает предшествующие ошибки, и сбрасывает внутреннее значение в CURLE_OK.
( Это поведение похоже на системные коды ошибок вроде IOResult )
См. также: tCurl.ErrorString
ResumeFrom: LongInt
Смещение (в байтах), с которого начнётся передача..
( Не все серверы поддерживают эту функцию )
SslCertType: CurlCertType
Формат пользовательского сертификата.
Поддерживаемые значения: CURL_CERT_PEM и CURL_CERT_DER.
SslKeyType: CurlKeyType
Формат приватного ключа.
Возможные значения:
  CURL_KEY_PEM
  CURL_KEY_DER
  CURL_KEY_ENG
ПРИМЕЧАНИЕ: Опция CURL_KEY_ENG позволяет загрузить приватный ключ из криптодвига. В этом случае CURLOPT_SSLKEY используется как идентификатор, передаваемый двигу. Необходимо установить криптодвиг с помощью опции CURLOPT_SSL_ENGINE.
SslVerifyHost: CurlHostVerify
Включает или выключает проверку поля Common name сертификата в процедуре SSL рукопожатия.
Возможные значения:
  CURL_VERIFY_NONE: Отключает верификацию.
  CURL_VERIFY_EXIST: Проверяет существование хоста.
  CURL_VERIFY_MATCH: Проверяет совпадение имени хоста и имени в сертификате.
SslVersion: curl_sslversion
Позволяет выбрать версию SSL. По умолчанию, библиотека SSL попытается установить это самостоятельно, однако с некоторыми серверами возможны проблемы, и тогда необходимо использовать эту опцию.
Возможные значения:
  CURL_SSLVERSION_DEFAULT
  CURL_SSLVERSION_TLSv1
  CURL_SSLVERSION_SSLv2
  CURL_SSLVERSION_SSLv3
TimeCondition: Curl_TimeCond
Определяет трактовку свойства tCurl.TimeValue.
Возможные значение: CURL_TIMECOND_IFMODSINCE (по-умолчанию) или CURL_TIMECOND_IFUNMODSINCE.
Используется только в протоколе HTTP.
Timeout: LongInt
Максимальное время операции (сек.).
Разрешение имён обычно занимает значительное время, и ограничение времени меньше нескольких минут может приветси к обрыву нормальных операций.
ПРИМЕЧАНИЕ: не рекомендуется использоваться в многопоточных unix-приложениях, так как используются сигналы.
( Если, конечно, tCurl.NoSignal не установлено в TRUE )
TimeValue: LongInt
Время в секундах с 1 янв 1970, смысл определяется свойством tCurl.TimeCondition.
PrivateData: pointer
Указатель на произвольные данные, которые вы хотите ассоциировать с этим экземпляром класса tCurl.

Historical Note:
Earlier versions of tCurl used this property to access the underlying CURLOPT_PRIVATE library option.
However, this version of tCurl uses CURLOPT_PRIVATE internally to provide tighter integration with tCurlMulti.

Thus, the CURLOPT_PRIVATE library option is now officially "off limits" from the outside,
and tCurl.PrivateData is simply a "pointer to nothing" that you can use however you like.


Строковые свойства
Примечание:
Объект tCurl хранит строки в виде pchar.
Доступ к свойствам организован через защищённые методы.

Знайте, что в таком кода:
  for i:= 1 to length(SomeCurl.URL) do SomethingWith(SomeCurl.URL[i]);
- внутренние процедуры будут конвертировать весь pchar в string каждый раз, когда вы читаете один символ!
Поэтому лучше использовать такой код:
  Temp:=SomeCurl.URL;
  for i:= 1 to length(Temp) do SomethingWith(Temp[i]);

CaInfo: string
Имя файла, содержащего один или несколько сертификатов для верификации.
Имеет смысл только если SslVerifyPeer установлено в TRUE.

Примечание для пользователей Win32:
  tCurl пытается инициализировать этот параметр путём поиска файла 'curl-ca-bundle.crt'.
  Порядок директорий, в которых происходит поиск:
  1. Директория приложения.
  2. Текущая директория.
  3. Системная директория Windows ( e.g. c:\windows\system32 )
  4. Директория Windows ( e.g. c:\windows )
  5. Все директории в переменной окружения PATH
CaPath: string
Имя директории, содержащей набор сертификатов для верификации.
Директория может быть подготовлена с помощью утилиты c_rehash из комплекта openssl.
Имеет смысл только если SslVerifyPeer установлено в TRUE.
Свойство CaPath не работает в Windows, в силу ограничений OpenSSL.
Cookie: string
Устанавливает куки для HTTP-запроса.
Строка длолжна иметь вид [NAME]=[CONTENTS]; где NAME - имя cookie.
CustomRequest: string
Устанавливает произвольный тип HTTP-запроса (вместо стандартных GET, POST).
Используется при выполнении запроса DELETE, или других более или менее редких HTTP-запросов.
Перед использованием стоит удостовериться, что удалённый сервер поддерживает такой запрос!
EgdSocket: string
Путь к сокету Entropy Gathering Daemon (накапливающего энтропию демона). Используется при инициализации генератора случайных чисел для SSL.
ErrorString: string
Читаемое представление сообщения об ошибке.
Может оказаться полезнее, чем просто код ошибки.
Если библиотека не вернула ошибку, содержит слово "success".
FtpAccount: string
Когда FTP сервер запрашивает "account data" после передачи имени пользователя и пароля, библиотека отсылает эту строку как часть ACCT комманды.
FtpPort: string
IP адрес для комманды PORT (протокол FTP).
Комманда PORT прости сервер соединиться с нами по указанному IP.
Строка может содержать IP адрес, имя компьютера, имя сетевого интерфейса (в Unix) или символ '-', указывающий библиотеке использовать дефолтный IP системы.
По-умолчанию все FTP операции идут в пассивном режиме, и не используют PORT.
NetInterface: string
Сетевой интерфейс для отправки данных.
Может содержать имя интерфейса (Unix), IP адрес либо имя сервера.
NetRcFile: string
В Windows не используется Set this to the full path name to the file you want libcurl to use as a  .netrc  file.
If this option is omitted, and tCurl.NetRc is TRUE, libcurl will attempt to find the  .netrc  file in the current user's home directory.
Krb4Level: string
Устанавливает уровень безопсаности протокола krb4 (Kerberos v.4), также включает использование krb4.
Возможные значения:   "clear"   "safe"   "confidential"  или  "private".
Если переданная строка не совпадает с одной из указанных выше, то бьудет использоваться "private".
Установтие это свойство равным пустой строке для отключения kerberos4.
Kerberos используется только для FTP.
PostFields: string
POST-Данные для отправки.
Это application/x-www-form-urlencoded строка, которую чаще всего и ожидают серверы.

Установка этого свойства подразумевает, что планируется HTTP POST запрос.
Для возврата к методу HTTP GET после установки PostFields, установите HttpGet := TRUE.

Убедитесь сами, что данные форматированны именно так, как их должен получить сервер..
( Большинство серверв ожидают url-encoded данные. )
Хотя tCurl не занимается автоматическим кодированием или конвертацией данных, можно использовать функцию класса tCurl.Escape(string) для этой цели.

Для отправки данных multipart/formdata (aka rfc1867-posts), см. свойство tCurl.HttpPost .
Proxy: string
Устанавливает используемый HTTP прокси.
Параметр должен содержать либо имя компьютера, либо IP адрес.
Строка может содержать префикс протокола [protocol]:// - ибо такой префикс будет отброшен.
Для указания порта добавьте :[port] к концу строки либо воспользуйтесь свойствомProxyPort.
Для указания логина добавьте username:password@ перед началом строки либо воспользуйтесь свойством ProxyUserPwd

При использовании HTTP прокси, libcurl будет прозрачно проводить все операции через HTTP,
даже если указан протокол ('ftp://' и т.п.) в URL.

Это может повлиять на список функций, которые вам доступны, например,
tCurl.Quote и подобные ей FTP specifics работаюттолько при туннелировании через HTTP прокси.
Такое туннелирование управляется свойством tCurl.HttpProxyTunnel.

ПРИМЕЧАНИЕ: libcurl использует значения следующих переменных окружения:
    http_proxy, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY, ALL_PROXY, NO_PROXY
Если одна из этих переменных задана, то её значение будет использовано библиотекой.
Свойство tCurl.Proxy имеет приоритет над переменными окружения.
Чтение этого свойства не учитывает значения переменных окружения.
ProxyUserPwd: string
Строка вида 'username:password' для авторизации на прокси-сервере.
См. tCurl.ProxyAuth для установки метода аутентификации.
RandomFile: string
Файл, используемый для инициализации генератора случайных чисел SSL.
Чемм случайнее содержимого файла, тем защищённее будет SSL соединение.
Range: string
Диапазон(ы) байт для получения с сервера.
Имеет вид "X-Y", где X или Y может быть опущено.
Передачи по HTTP поддерживают объединение интервалов, где отдельные части разделяются запятой: "X-Y,N-M".
При использовании нескольких интервалов сервер будет отправлять документ частями, используя технику MIME для разделения частей.
Внимание: Не все серверы поддерживают это!
Referer: string
Устанавливает поле Referer: в заголовке HTTP запроса.
SourceURL: string
При установке включает т.н. FXP-режим (передача сервер-сервер), используя tCurl.SourceURL как источник, и tCurl.URL как цель.
SourceUserPwd: string
Устанавливает  'username:password'  для соединения с источником в режиме FXP.
( Используйте tCurl.UserPwd для соединения с целью . )
SslCert: string
Имя файла, содержащего SSL сертификат.
По-умолчанию ожидается формат "PEM", указать формат можно с помощью свойства SslCertType .
SslCipherList: string
Строка, содержащая список алгоритмов для SSL соединения.
Список должен быть синтаксически корректным, содержать не менее одного алгоритма, разделённых двоеточием. Запятые и пробелы также могут служить разделителями, но обычно используют именно двоеточие; - и + могут использоваться как операторы. Валидные примеры имён алгоритмов: 'RC4-SHA', 'SHA1+DES', 'TLSv1' и 'DEFAULT'. Значение по-умолчанию обычно устанавливается при компиляции OpenSSL.
Подробнее о списках алгоритмов: http://www.openssl.org/docs/apps/ciphers.html
SslEngine: string
Позволяет выбрать криптоалгоритм для приватного ключа.
Если такой алгоритм не поддерживается, возвращается значение CURLE_SSL_ENGINE_NOTFOUND.
SslKey: string
Имя файла, содержащего приватный ключ.
По-умолчанию ожидается формат "PEM", указать формат можно с помощью свойства SslKeyType .
SslKeyPassword: string
Пароль от приватного ключа SslKey.
URL: string
URL запроса.
ПРИМЕЧАНИЕ: Это свойство должно быть установлен до вызова tCurl.Perform.
UserAgent: string
Позволяет установить поле User-Agent: в HTTP запросе
UserPwd: string
'username:password' используемые для соединения (т.е. для авторизации на целевом сервере - не на прокси).


Свойства, задающие имя файла или поток
Не забудьте прочитать ОСОБЫЕ ЗАМЕЧАНИЯ о колбеках, событиях, именах файлов и потоках.
CookieFile: string
Загружает cookie из файла (старые куки удаляются).
Файл может быть в формате Netscape / Mozilla cookie или в виде дампа HTTP заголовков.
Установка этого совйства автоматически устанавливает свойство tCurl.CookieJar в то же значение, если оно не было установлено ранее.
См. также tCurl.CookieList
CookieJar: string
При установка этого свойства libcurl сохранит все cookies в указанный файл при вызове tCurl.Destroy.
Если в этот момент нет cookies, то файл не создаётся. Укажите "-" для вывода списка в stdout.
См. также tCurl.CookieList
ErrorFile: string
Имя файла для записи сообщений об ошибках
При пустом имени файла или NULL данные будут выводиться в stderr.
OutputFile: string
Файл для записи полученных данных.
При пустом имени файла или NULL данные будут выводиться в stdout.
Примечание: символы конца строки на Win32 системах НЕ меняются автоматически.
OutputStream: pointer   - См.   tCurl.WriteFunction
InputFile: string
Файл для чтения отдаваемых данных.
InputStream: pointer   - См.   tCurl.ReadFunction
HeaderFile: string
Файл для записи HTTP-заголовков.
HeaderStream: pointer   - См.   tCurl.HeaderFunction


Связанные списки
ВНИМАНИЕ:
Используйте метод  Add(string) для добавления строк в свойство типа tCurlRWList .
Очистка списка проихводится методом  Clear.
(Curl игнорирует опцию, если список пуст).
Http200Aliases: tCurlRWList
Список пользовательских заголовков ответа, трактуемых как "HTTP 200" (OK).
Нпример, серверы IceCast используют заголовок ответа "ICY 200 OK", поэтому после:
  Http200Aliases.Add('ICY 200 OK');
такие ответы будут трактоваться как ууспешные.
HttpHeader: tCurlRWList
Список (дополнительных) полей HTTP-запроса.
Используя эту опцию можно добавлять новые поля, заменять и удалять имеющиеся.

При добавлении поля, уже сгенерированного libcurl, ваше значение заменит имеющееся:
  HttpHeader.Add('Accept: audio/mpeg, audio/x-mpegurl, */*');

При добавлении поля без содержания, имеющееся поле будет удалено:
  HttpHeader.Add('Accept:');

При добавлении пользовательского поля, оно будет передано вместе с имеющимися:
  HttpHeader.Add('Foo: bar/baz');

ПРИМЕЧАНИЕ: Наиболее часто изменяемые поля имеют сови отдельные свойства: Cookie, UserAgent и Referer.
Quote: tCurlRWList
Список FTP комманд, передаваемых ПЕРЕД началом передачи.
PostQuote: tCurlRWList
Список FTP комманд, передаваемых ПОСЛЕ завершения передачи.
( Это свойство должно быть установлено до вызова  tCurl.Perform )
PreQuote: tCurlRWList
Список FTP комманд, передаваемых после выбора типа передачи.
( Это свойство должно быть установлено до вызова  tCurl.Perform )
SourceQuote: tCurlRWList
Аналог tCurl.Quote для сервера-источника (FXP).
SourcePostQuote: tCurlRWList
Аналог tCurl.PostQuote для сервера-источника (FXP).
SourcePreQuote: tCurlRWList
Аналог tCurl.PreQuote для сервера-источника (FXP).
TelnetOptions: tCurlRWList
Список переменных, передаваемых при установке telnet-соединения.
Переменные должны иметь вид:   <option=value>.
libcurl поддерживают следующие опции:   TTYPE, XDISPLOC   and   NEW_ENV.
Подробности в стандарте TELNET.
SslEnginesList: tCurlROList
Доступный только для чтения список поддерживаемых OpenSSL крипто-движков.
Обычно движки реализуются в виде отдельных динамических библиотек.
Поэтому не все движки из списка могут быть доступны во время исполнения.
Перебор списка делается примерно так:
 for i:=0 to SslEnginesList.Count-1 do ShowMessage(SslEnginesList[i]);


Свойства HttpPost/FormData
ПРИМЕЧАНИЕ: Свойства HttpPost и FormData предоставляют два различных пути достижения одного и того же результата.
Чтобы сохранить валидность внутренних указателей, используйте только один из методов, но не оба.
HttpPost: pcurl_httppost
Указатель на валидную структуру tHttpPost, содержащую данные для отправки как multipart/formdata методом HTTP POST to .

Данные в списке не должны меняться до момента закрытия CURL хендла методом tCurl.Destroy.

Для создания сложных структур tHttpPost, используйте библиотечную функцию curl_formadd(), описанную в документации к библиотеке.
Для более простых структур используйте метод tCurl.FormData.Add(), описанный ниже.
FormData: tMultiPartFormData
Используйте метод FormData.Add() этого свойства для описания данных, используемых libcurl в multipart/formdata HTTP POST запросе. Синтаксис метода тков:
...
tCurl.FormData.Add(Name, Contents, ContentType: string; PostType: tCurlPostType);
...
Где:
Name имя поля.
Contents Данные либо имя файла с данными (см. PostType).
ContentType строковое представление MIME-типа данных, например "text/html" или "image/jpeg"
PostType одна из следующих констант:
POST_TYPE_PLAIN : "Contents" отправляется на сервер как простая строка.
POST_TYPE_FILEDATA : "Contents" является имя файла, данные из которого будут использованы в качестве содержимого поля.
POST_TYPE_ATTACHMENT : "Contents" является именем файла, файл будет отправлен как attachment, имя файла будет содержаться в поле.

Вызывайте этот метод, пока все поля не будут добавлены.
Для очистки используйте метод FormData.Clear;
.


Свойства-колбеки (и связанные указатели на данные)
Не забудьте прочитать ОСОБЫЕ ЗАМЕЧАНИЯ о колбеках, событиях, именах файлов и потоках.
ProgressData: pointer
Указатель - первый аргумент при вызове колбека tCurl.ProgressFunction.
ProgressFunction: curl_progress_callback
Указатель на функцию вида :
...
type curl_progress_callback =
  function( clientp: pointer; dltotal, dlnow, ultotal, ulnow: double ): LongInt;

...
Эта функция вызывается libcurl вместо внутреннего эквивалента регулярно во время передачи данных.
Неизвестные (неиспользуемые) аргументы будут имень значение ноль (например, при скачивании данных размер отданного будет 0).
Возврат ненулевого значения из этого колбека заставит libcurl прервать передачу и вернуть CURLE_ABORTED_BY_CALLBACK.
ПРИМЕЧАНИЕ:   Установите  tCurl.NoProgress:=FALSE  чтобы включить этот колбек!
ReadFunction: curl_read_callback
Указатель на функцию вида :
...
type curl_read_callback =
  function(ptr: pointer; size, nmemb:dword; stream:pointer):dword; cdecl;

...
libcurl вызывает эту функцию, когда ей требуются данные для отдачи.
Область данных, на которую указывает ptr, может быть заполнена не более чем ( size * nmemb ) байтами.
Ваша функция должна вернуть число байт, записанных в память.
Возврат ноля означает конец файла, это завершит текущую передачу.
Аргумент stream берётся из свойства tCurl.InputStream .
Note: You can also use stream for other data types, for instance: pChar( stream )
WriteFunction: curl_write_callback
Указатель на функцию вида :
...
type curl_write_callback =
  function(ptr: pointer; size, nmemb:dword; stream:pointer):dword; cdecl;

...
libcurl вызывает эту функцию, когда появляются данные для записи.
Размер данных по адресу ptr равен ( size * nmemb ).
Верните число обработанных. Если это число отличается от числа переданных байт,
это послужит сигналом ошибки, прервёт передачу и вернёт CURLE_WRITE_ERROR.
Аргумент stream берётся из свойства tCurl.OutputStream .
You can also use stream for other data types, for instance: pChar( stream )
NOTE: при всех вызовах вы будете получать максимальный объём данных, но вы не можете предсказать, сктолько их конкретно будет
 - может один байт, может один терабайт!
HeaderFunction: curl_write_callback
Указатель на функцию вида :
...
type tCurlHeaderFunction =
  function(ptr: pChar; size, nmemb:dword; stream:pointer):dword; cdecl;

...
Libcurl вызывает эту функцию, когда появляются данные заголовка, которые требуется записать.
Заголовки гарантировано записываются один-за-другим, и только целыми строками.
С помощью этой функции удобно обрабатывать заголовки.
Размер данных, на которые указывает ptr, равен ( size * nmemb ).
Указатель stream берётся из свойства tCurl.HeaderStream .
Верните количество записанных байт, или ноль - в случае ошибки
( при этом передача будет оборвана, и будет возвращена ошибка CURLE_WRITE_ERROR ).
DebugFunction: curl_debug_callback
Указатель на функцию, получающую отладочную информацию, обычно выдаваемую в консоль при включенном tCurl.Verbose.
Функция должна быть следующего вида:
...
type curl_debug_callback = function (handle: pCurl; infotype: curl_infotype;
        data: pChar; size:dword; userp:pointer): LongInt; cdecl;

...
Libcurl передаст одноу из следующих констант в аргументе curl_infotype:
  CURLINFO_TEXT,
  CURLINFO_HEADER_IN,    CURLINFO_HEADER_OUT,
  CURLINFO_DATA_IN,      CURLINFO_DATA_OUT,
  CURLINFO_SSL_DATA_IN,  CURLINFO_SSL_DATA_OUT.

Примечание: Эта функция должна вернуть 0.
DebugData: pointer
Указатель на произвольные данные.
Этот указатель будет последним аргументом колбека tCurl.DebugFunction .
IoCtlFunction: curl_ioctl_callback
Эта функция вызывается libcurl для специальных I/O операций, которые libcurl сама сделать не может.
На данный момент, единственная такая операция - перемотка потока.
Перемотка входного (read) потока данных может потребоваться при операциях HTTP PUT или POST с многопроходной аутентификацией.

Функция должна иметь следующиу вид:
curl_ioctl_callback =
    function (handle:pCURL; cmd:longint; clientp:pointer):curlioerr; cdecl;

IoCtlData: pointer
Указатель на произвольные данные.
Этот указатель будет третьим аргументом колбека tCurl.IoCtlFunction.
SslCtxFunction: curl_ssl_ctx_callback

Указатель на функцию вида :
  curl_ssl_ctx_callback = function (curl:pCURL; ssl_ctx:pointer; userptr:pointer):CURLcode; cdecl;

libcurl вызывает эту функцию перед самым актом установления SSL-соединения, после обработки всех остальных SSL-опций.
Цель этой функции - дать приложению последнюю возможность изменть ход инициализации OpenSSL.

Параметр ssl_ctx является указателем на openssl структуру SSL_CTX.
Аргумент userptr берётся из свойства SslCtxData .

Если произошла ошибка, то попытка установить соединение не происходит, и свойство ResultCode будет содерждать код ошибки из этого колбека.

Использование этой функции позволяет, например, использовать openssl-евские колбеки для добавления дополнительной валидации сертификатов,
и даже изменить действующую URI запроса HTTPS .

ПРИМЕЧАНИЕ: Для использования этого свойства необходимы глубокие познания в области работы библиотеки openssl.

Хотите знать больше? Курите маны по libcurl и openssl!

SslCtxData: pointer
Указатель, передаваемый колбеку SLL контекста SslCtxFunction .
Этот параметр используется в качестветретьего аргумента ( NIL по-умолчанию ).


tCurl: события

Note:
  События, описанные ниже, являются обёртками колбеков, описанных выше. В зависимости от модели программирования, вы выберете либо события, либо колбеки, от смешивания их ничего хорошего не выйдет!   В общем случае, события рсчитаны на компонентные оконные приложения, а колбеки - на консольные, в которых нет "родительского" объекта.


Events
OnDebug: tCurlDebugEvent
Предоставляет доступ "только для чтения" к данным и информации о соединении. Метод должен иметь вид:
...
type tCurlDebugEvent =
 procedure( Sender:tObject; infotype:CurlInfoType; data:pChar; len:dword; var bContinue:boolean );

...
Libcurl передаст одну из следующих констант в параметре infotype :
  CURLINFO_TEXT :   Информационный текст о текущей операции.
  CURLINFO_HEADER_IN :   Одно поле заголовка ответа получено.
  CURLINFO_HEADER_OUT :   Все поля заголовка переданы.
  CURLINFO_DATA_IN :   Данные приняты.
  CURLINFO_DATA_OUT :   Данные отправлены.
  CURLINFO_SSL_DATA_IN :   Получены SSL данные.
  CURLINFO_SSL_DATA_OUT:   Переданы SSL данные.

Использование этого события автоматически устанавливает  tCurl.Verbose в TRUE.

OnProgress: tCurlProgressEvent
Метод должен иметь вид:
...
type tCurlProgressEvent =
  procedure(Sender:tObject; BytesTotal, BytesNow:longint; var bContinue:Boolean);

...
Так как одна из пар значений - ( dl_total/dl_now ) или ( ul_total/ul_now ) - в tCurl.ProgressFunction будет
(в общем случае) возвращать ноль/ноль, процедура OnProgress получит только ту пару, которая в данный момент валидна, в зависимости от
направления потока данных.
Установка bContinue в FALSE вызовет обрыв передачи библиотекой, и приведёт к возврату CURLE_ABORTED_BY_CALLBACK.

Использование этого события автоматически установит  tCurl.NoProgress в FALSE.

OnHeader: tCurlHeaderEvent
Событий происходит при каждом получении libcurl заголовка ответа.
Метод должен иметь следующий вид:
...
type tCurlHeaderEvent =
  procedure(Sender:tObject; data:string; var bContinue:Boolean);

...
Поля заголовка передаются по одному на событие, концевые переносы строк удалены.
( Последнее поле заголовка в HTTP ответе будет пустой строкой. )

Установка bContinue в FALSE вызовет обрыв передачи библиотекой, и приведёт к возврату CURLE_WRITE_ERROR.

Не забудьте прочитать ОСОБЫЕ ЗАМЕЧАНИЯ о колбеках, событиях, именах файлов и потоках.
OnReceive: tCurlReceiveEvent
Это событие произойдёт когад libcurl получит входящие данные, которые ваша процедура должна обработать.
Метод должен иметь следующий вид:
...
type tCurlReceiveEvent =
  procedure(Sender:tObject; data:pointer; len:dword; var bContinue:Boolean);

...
при всех вызовах вы будете получать максимальный объём данных, но вы не можете предсказать, сктолько их конкретно будет - может один байт, может один терабайт!

Установка bContinue в FALSE вызовет обрыв передачи библиотекой, и приведёт к возврату CURLE_WRITE_ERROR.

Не забудьте прочитать ОСОБЫЕ ЗАМЕЧАНИЯ о колбеках, событиях, именах файлов и потоках.
OnTransmit: tCurlTransmitEvent
Это событие произойдёт, когад библиотеке понадобятся данные для отправки.
Метод должен иметь вид:
...
type tCurlTransmitEvent =
  procedure(Sender:tObject; data:pointer; var len:dword);

...
Область памяти, на которую указывает data, может принять не более len байт.
Установка len в 0 служит сигналом конца файла, и завершает текущую передачу.

Не забудьте прочитать ОСОБЫЕ ЗАМЕЧАНИЯ о колбеках, событиях, именах файлов и потоках.
OnListCookies: tCurlListCookiesEvent
Процедура ListCookies перебирает список tCurl.CookieList, вызывая OnListCookies один раз для каждого cookie.

Параметр Sender содержит указатель на экземпляр tCurl, вызвавший процедуру,
параметр Data - текст cookie.

Установка bContinue в FALSE из обработчика
останавливает перебор cookies.

Note:
For reasons beyond the scope of this document, it is simply not practical to provide
random-access to the list, for instance through a TStringList or similar.
The only efficient and reliable way to access the cookie list is sequentially, starting at the top.
This type of cookie support is relatively new to both CurlPas and libcurl,
and might be subject to change in the not-so-distant future.