- SocketCreate
- SocketClose
- SocketConnect
- SocketIsConnected
- SocketIsReadable
- SocketIsWritable
- SocketTimeouts
- SocketRead
- SocketSend
- SocketTlsHandshake
- SocketTlsCertificate
- SocketTlsRead
- SocketTlsReadAvailable
- SocketTlsSend
- WebRequest
- SendFTP
- SendMail
- SendNotification
WebRequest
Отправляет HTTP-запрос на указанный сервер. Существует два варианта функции:
1. Для отправки простых запросов вида "ключ=значение" с использованием заголовка Content-Type: application/x-www-form-urlencoded.
int WebRequest(
|
2. Для отправки запросов произвольного типа с указанием собственного набора заголовков для более гибкого взаимодействия с различными Web-сервисами.
int WebRequest(
|
Параметры
method
[in] Метод HTTP.
url
[in] URL-адрес.
headers
[in] Заголовки запроса вида "ключ: значение", разделенные переносом строки "\r\n".
cookie
[in] Значение Cookie.
referer
[in] Значение заголовка Referer HTTP-запроса.
timeout
[in] Таймаут в миллисекундах.
data[]
[in] Массив данных тела HTTP-сообщения.
data_size
[in] Размер массива data[].
result[]
[out] Массив с данными ответа сервера.
result_headers
[out] Заголовки ответа сервера.
Возвращаемое значение
Код ответа HTTP-сервера либо -1 в случае ошибки.
Примечание
Для использования функции WebRequest() следует добавить адреса серверов в список разрешенных URL во вкладке "Советники" окна "Настройки". Порт сервера выбирается автоматически на основе указанного протокола - 80 для "http://" и 443 для "https://".
Функция WebRequest() является синхронной, это означает, что она приостанавливает выполнение программы и ждет ответа от запрашиваемого сервера. Так как задержки при получении ответа на отправленный запрос могут быть большими, то функция запрещена для вызовов из индикаторов, поскольку индикаторы работают в едином потоке, общем для всех индикаторов и графиков на данном символе. Задержка выполнения индикатора на одном из графиков символа может привести к остановке обновления всех графиков по данному символу.
Функцию можно вызывать только из экспертов и скриптов, так как они работают в собственном потоке выполнения. При вызове из индикатора GetLastError() вернет ошибку 4014 – "Системная функция не разрешена для вызова".
При работе в тестере стратегий функция WebRequest() не выполняется.
Пример
void OnStart()
|