HTTPClient

Наследует: RefCounted < Object

Клиент низкоуровневого протокола передачи гипертекста.

Описание

Клиент протокола передачи гипертекста (иногда называемый "User Agent"). Используется для выполнения HTTP-запросов на загрузку веб-контента, выгрузку файлов и других данных, а также для взаимодействия с различными службами, среди прочего.

Альтернативу более высокого уровня см. в узле HTTPRequest.

Примечание: Этому клиенту достаточно подключиться к хосту один раз (см. connect_to_host()) для отправки нескольких запросов. По этой причине методы, принимающие URL-адреса, обычно берут только часть после хоста, а не полный URL-адрес, поскольку клиент уже подключен к хосту. Полный пример и инструкции по началу работы см. в request().

HTTPClient следует использовать повторно между несколькими запросами или для подключения к разным хостам вместо создания одного клиента на каждый запрос. Поддерживает протокол Transport Layer Security (TLS), включая проверку сертификата сервера. Коды статуса HTTP в диапазоне 2xx указывают на успешное выполнение, 3xx — на перенаправление (т. е. «попробуйте еще раз, но здесь»), 4xx — на ошибку в запросе и 5xx — на ошибку на стороне сервера.

Для получения дополнительной информации о HTTP см. MDN's documentation on HTTP (или прочитайте RFC 2616 чтобы получить прямо из источника).

Примечание: При экспорте на Android убедитесь, что в настройках экспорта Android включено разрешение INTERNET перед экспортом проекта или использованием развертывания в один клик. В противном случае Android будет блокировать любые сетевые соединения.

Примечание: Рекомендуется использовать транспортное шифрование (TLS) и избегать передачи конфиденциальной информации (например, учётных данных) в параметрах URL HTTP GET. Вместо этого рассмотрите возможность использования HTTP POST-запросов или HTTP-заголовков для передачи такой информации.

Примечание: При выполнении HTTP-запросов из проекта, экспортированного в Интернет, помните, что удаленный сервер может не разрешать запросы из внешних источников из-за CORS. Если вы размещаете рассматриваемый сервер, вам следует изменить его бэкэнд, чтобы разрешить запросы из внешних источников, добавив HTTP-заголовок Access-Control-Allow-Origin: *.

Примечание: Поддержка TLS в настоящее время ограничена протоколами TLSv1.2 и TLSv1.3. Попытка подключения к серверу, поддерживающему только старые (небезопасные) версии TLS, приведёт к ошибке.

Внимание: Отзыв и закрепление TLS-сертификатов в настоящее время не поддерживаются. Отозванные сертификаты принимаются, если они в остальном действительны. Если это вас беспокоит, рекомендуем использовать автоматически управляемые сертификаты с коротким сроком действия.

Обучающие материалы

Свойства

bool

blocking_mode_enabled

false

StreamPeer

connection

int

read_chunk_size

65536

Методы

void

close()

Error

connect_to_host(host: String, port: int = -1, tls_options: TLSOptions = null)

int

get_response_body_length() const

int

get_response_code() const

PackedStringArray

get_response_headers()

Dictionary

get_response_headers_as_dictionary()

Status

get_status() const

bool

has_response() const

bool

is_response_chunked() const

Error

poll()

String

query_string_from_dict(fields: Dictionary)

PackedByteArray

read_response_body_chunk()

Error

request(method: Method, url: String, headers: PackedStringArray, body: String = "")

Error

request_raw(method: Method, url: String, headers: PackedStringArray, body: PackedByteArray)

void

set_http_proxy(host: String, port: int)

void

set_https_proxy(host: String, port: int)


Перечисления

enum Method: 🔗

Method METHOD_GET = 0

Метод HTTP GET. Метод GET запрашивает представление указанного ресурса. Запросы с использованием GET должны только извлекать данные.

Method METHOD_HEAD = 1

Метод HTTP HEAD. Метод HEAD запрашивает ответ, идентичный ответу запроса GET, но без тела ответа. Это полезно для запроса метаданных, таких как заголовки HTTP, или для проверки существования ресурса.

Method METHOD_POST = 2

Метод HTTP POST. Метод POST используется для отправки сущности на указанный ресурс, часто вызывая изменение состояния или побочные эффекты на сервере. Это часто используется для форм и отправки данных или загрузки файлов.

Method METHOD_PUT = 3

Метод HTTP PUT. Метод PUT запрашивает замену всех текущих представлений целевого ресурса полезной нагрузкой запроса. (Вы можете думать о POST как о «создании или обновлении», а PUT как о «обновлении», хотя многие сервисы, как правило, не делают четкого различия или не меняют их значение).

Method METHOD_DELETE = 4

Метод HTTP DELETE. Метод DELETE запрашивает удаление указанного ресурса.

Method METHOD_OPTIONS = 5

Метод HTTP OPTIONS. Метод OPTIONS запрашивает описание параметров связи для целевого ресурса. Используется редко.

Method METHOD_TRACE = 6

Метод HTTP TRACE. Метод TRACE выполняет проверку обратной связи сообщения по пути к целевому ресурсу. Возвращает весь полученный HTTP-запрос в теле ответа. Используется редко.

Method METHOD_CONNECT = 7

Метод HTTP CONNECT. Метод CONNECT устанавливает туннель к серверу, идентифицированному целевым ресурсом. Используется редко.

Method METHOD_PATCH = 8

Метод HTTP PATCH. Метод PATCH используется для применения частичных изменений к ресурсу.

Method METHOD_MAX = 9

Представляет размер перечисления Method.


enum Status: 🔗

Status STATUS_DISCONNECTED = 0

Статус: Отключено от сервера.

Status STATUS_RESOLVING = 1

Статус: В настоящее время выполняется преобразование имени хоста для указанного URL в IP-адрес.

Status STATUS_CANT_RESOLVE = 2

Статус: Ошибка DNS: Невозможно определить имя хоста для указанного URL.

Status STATUS_CONNECTING = 3

Статус: В настоящее время выполняется подключение к серверу.

Status STATUS_CANT_CONNECT = 4

Статус: Невозможно подключиться к серверу.

Status STATUS_CONNECTED = 5

Статус: Соединение установлено.

Status STATUS_REQUESTING = 6

Статус: В настоящее время отправляется запрос.

Status STATUS_BODY = 7

Статус: получено тело HTTP.

Status STATUS_CONNECTION_ERROR = 8

Статус: Ошибка HTTP-соединения.

Status STATUS_TLS_HANDSHAKE_ERROR = 9

Статус: Ошибка при установлении связи TLS.


enum ResponseCode: 🔗

ResponseCode RESPONSE_CONTINUE = 100

Код статуса HTTP 100 Continue. Промежуточный ответ, который указывает, что пока все в порядке и клиент должен продолжить обработку запроса (или игнорировать этот статус, если он уже завершен).

ResponseCode RESPONSE_SWITCHING_PROTOCOLS = 101

Код статуса HTTP 101 Switching Protocol. Отправляется в ответ на заголовок запроса Upgrade клиентом. Указывает протокол, на который переключается сервер.

ResponseCode RESPONSE_PROCESSING = 102

Код статуса HTTP 102 Processing (WebDAV). Указывает, что сервер получил и обрабатывает запрос, но ответ пока недоступен.

ResponseCode RESPONSE_OK = 200

Код статуса HTTP 200 OK. Запрос выполнен успешно. Ответ по умолчанию для успешных запросов. Значение зависит от запроса:

  • METHOD_GET: Ресурс был извлечен и передан в теле сообщения.

  • METHOD_HEAD: Заголовки сущности находятся в теле сообщения.

  • METHOD_POST: Ресурс, описывающий результат действия, передается в теле сообщения.

  • METHOD_TRACE: Тело сообщения содержит сообщение запроса, полученное сервером.

ResponseCode RESPONSE_CREATED = 201

Код статуса HTTP 201 Created. Запрос выполнен успешно, и в результате создан новый ресурс. Обычно это ответ, отправляемый после запроса PUT.

ResponseCode RESPONSE_ACCEPTED = 202

Код статуса HTTP 202 Accepted. Запрос получен, но еще не обработан. Он необязателен, то есть в HTTP нет способа позже отправить асинхронный ответ, указывающий результат обработки запроса. Он предназначен для случаев, когда другой процесс или сервер обрабатывает запрос, или для пакетной обработки.

ResponseCode RESPONSE_NON_AUTHORITATIVE_INFORMATION = 203

Код статуса HTTP 203 Non-Authoritative Information. Этот код ответа означает, что возвращаемый набор метаинформации не является точным набором, доступным с исходного сервера, а собран из локальной или сторонней копии. За исключением этого условия, ответ 200 OK должен быть предпочтительнее этого ответа.

ResponseCode RESPONSE_NO_CONTENT = 204

Код статуса HTTP 204 No Content. Нет контента для отправки по этому запросу, но заголовки могут быть полезны. Пользовательский агент может обновить свои кэшированные заголовки для этого ресурса новыми.

ResponseCode RESPONSE_RESET_CONTENT = 205

Код статуса HTTP 205 Reset Content. Сервер выполнил запрос и хочет, чтобы клиент сбросил «представление документа», вызвавшее отправку запроса, в исходное состояние, полученное от исходного сервера.

ResponseCode RESPONSE_PARTIAL_CONTENT = 206

Код статуса HTTP 206 Partial Content. Этот код ответа используется из-за заголовка диапазона, отправленного клиентом для разделения загрузки на несколько потоков.

ResponseCode RESPONSE_MULTI_STATUS = 207

Код статуса HTTP 207 Multi-Status (WebDAV). Ответ Multi-Status передает информацию о нескольких ресурсах в ситуациях, когда могут быть уместны несколько кодов статуса.

ResponseCode RESPONSE_ALREADY_REPORTED = 208

Код статуса HTTP 208 Already Reported (WebDAV). Используется внутри элемента ответа DAV: propstat, чтобы избежать повторного перечисления внутренних членов нескольких привязок к одной и той же коллекции.

ResponseCode RESPONSE_IM_USED = 226

Код статуса HTTP 226 IM Used (WebDAV). Сервер выполнил запрос GET для ресурса, а ответ представляет собой представление результата одной или нескольких манипуляций с экземпляром, примененных к текущему экземпляру.

ResponseCode RESPONSE_MULTIPLE_CHOICES = 300

HTTP-код статуса 300 Multiple Choice. Запрос имеет более одного возможного ответа, и нет стандартизированного способа выбора одного из ответов. User-agent или пользователь должны выбрать один из них.

ResponseCode RESPONSE_MOVED_PERMANENTLY = 301

Код статуса HTTP 301 Moved Permanently. Перенаправление. Этот код ответа означает, что URI запрошенного ресурса был изменен. Новый URI обычно включается в ответ.

ResponseCode RESPONSE_FOUND = 302

Код статуса HTTP 302 Found. Временное перенаправление. Этот код ответа означает, что URI запрошенного ресурса был временно изменен. В будущем могут быть внесены новые изменения в URI. Поэтому этот же URI должен использоваться клиентом в будущих запросах.

ResponseCode RESPONSE_SEE_OTHER = 303

Код статуса HTTP 303 See Other. Сервер перенаправляет агента пользователя на другой ресурс, как указано в URI в поле заголовка Location, который предназначен для предоставления косвенного ответа на исходный запрос.

ResponseCode RESPONSE_NOT_MODIFIED = 304

Код статуса HTTP 304 Не изменено. Получен условный запрос GET или HEAD, который привел бы к ответу 200 OK, если бы не тот факт, что условие было оценено как ложное.

ResponseCode RESPONSE_USE_PROXY = 305

Устарело: Many clients ignore this response code for security reasons. It is also deprecated by the HTTP standard.

Код статуса HTTP 305 Использовать прокси.

ResponseCode RESPONSE_SWITCH_PROXY = 306

Устарело: Many clients ignore this response code for security reasons. It is also deprecated by the HTTP standard.

Код статуса HTTP 306 Переключить прокси.

ResponseCode RESPONSE_TEMPORARY_REDIRECT = 307

Код статуса HTTP 307 Temporary Redirect. Целевой ресурс временно находится под другим URI, и пользовательский агент НЕ ДОЛЖЕН изменять метод запроса, если он выполняет автоматическое перенаправление на этот URI.

ResponseCode RESPONSE_PERMANENT_REDIRECT = 308

Код статуса HTTP 308 Permanent Redirect. Целевому ресурсу был назначен новый постоянный URI, и любые будущие ссылки на этот ресурс должны использовать один из включенных URI.

ResponseCode RESPONSE_BAD_REQUEST = 400

Код статуса HTTP 400 Bad Request. Запрос был недействительным. Сервер не может или не будет обрабатывать запрос из-за чего-то, что воспринимается как ошибка клиента (например, неверный синтаксис запроса, недопустимое кадрирование сообщения запроса, недопустимое содержимое запроса или обманчивая маршрутизация запроса).

ResponseCode RESPONSE_UNAUTHORIZED = 401

Код статуса HTTP 401 Unauthorized. Требуются учетные данные. Запрос не был применен, поскольку отсутствуют действительные учетные данные аутентификации для целевого ресурса.

ResponseCode RESPONSE_PAYMENT_REQUIRED = 402

Код статуса HTTP 402 Payment Required. Этот код ответа зарезервирован для будущего использования. Первоначальной целью создания этого кода было его использование для цифровых платежных систем, однако в настоящее время это не используется.

ResponseCode RESPONSE_FORBIDDEN = 403

Код статуса HTTP 403 Forbidden. У клиента нет прав доступа к контенту, т. е. он не авторизован, поэтому сервер отказывается дать надлежащий ответ. В отличие от 401, идентификация клиента известна серверу.

ResponseCode RESPONSE_NOT_FOUND = 404

Код статуса HTTP 404 Not Found. Сервер не может найти запрошенный ресурс. Либо URL не распознан, либо конечная точка действительна, но сам ресурс не существует. Может также отправляться вместо 403, чтобы скрыть существование ресурса, если клиент не авторизован.

ResponseCode RESPONSE_METHOD_NOT_ALLOWED = 405

Код статуса HTTP 405 Method Not Allowed. HTTP-метод запроса известен серверу, но был отключен и не может быть использован. Например, API может запретить DELETE-инвестирование ресурса. Два обязательных метода, GET и HEAD, никогда не должны быть отключены и не должны возвращать этот код ошибки.

ResponseCode RESPONSE_NOT_ACCEPTABLE = 406

Код статуса HTTP 406 Not Acceptable. Целевой ресурс не имеет текущего представления, которое было бы приемлемо для пользовательского агента, согласно полям заголовка проактивного согласования, полученным в запросе. Используется при согласовании содержимого.

ResponseCode RESPONSE_PROXY_AUTHENTICATION_REQUIRED = 407

Код статуса HTTP 407 Proxy Authentication Required. Аналогичен коду 401 Неавторизованный, но указывает на то, что клиенту необходимо пройти аутентификацию, чтобы использовать прокси-сервер.

ResponseCode RESPONSE_REQUEST_TIMEOUT = 408

Код статуса HTTP 408 Request Timeout. Сервер не получил полное сообщение запроса в течение времени, которое он был готов ждать.

ResponseCode RESPONSE_CONFLICT = 409

Код статуса HTTP 409 Conflict. Запрос не может быть выполнен из-за конфликта с текущим состоянием целевого ресурса. Этот код используется в ситуациях, когда пользователь может разрешить конфликт и повторно отправить запрос.

ResponseCode RESPONSE_GONE = 410

Код статуса HTTP 410 Gone. Целевой ресурс больше не доступен на исходном сервере, и это состояние, скорее всего, постоянно.

ResponseCode RESPONSE_LENGTH_REQUIRED = 411

Код статуса HTTP 411 Length Required. Сервер отказывается принимать запрос без определенного заголовка Content-Length.

ResponseCode RESPONSE_PRECONDITION_FAILED = 412

Код статуса HTTP 412 Precondition Failed. Одно или несколько условий, указанных в полях заголовка запроса, оценены как false при проверке на сервере.

ResponseCode RESPONSE_REQUEST_ENTITY_TOO_LARGE = 413

Код статуса HTTP 413 Entity Too Large. Сервер отказывается обрабатывать запрос, поскольку полезная нагрузка запроса больше, чем сервер готов или может обработать.

ResponseCode RESPONSE_REQUEST_URI_TOO_LONG = 414

Код статуса HTTP 414 Request-URI Too Long. Сервер отказывается обслуживать запрос, поскольку request-target длиннее, чем сервер готов интерпретировать.

ResponseCode RESPONSE_UNSUPPORTED_MEDIA_TYPE = 415

Код статуса HTTP 415 Unsupported Media. Исходный сервер отказывается обслуживать запрос, поскольку полезная нагрузка имеет формат, не поддерживаемый этим методом на целевом ресурсе.

ResponseCode RESPONSE_REQUESTED_RANGE_NOT_SATISFIABLE = 416

Код статуса HTTP 416 Запрошенный диапазон невыполним. Ни один из диапазонов в поле заголовка Range запроса не перекрывает текущий экстент выбранного ресурса, или набор запрошенных диапазонов был отклонен из-за недопустимых диапазонов или чрезмерного запроса маленьких или перекрывающихся диапазонов.

ResponseCode RESPONSE_EXPECTATION_FAILED = 417

Код статуса HTTP 417 Expectation Failed. Ожидание, указанное в поле заголовка Expect запроса, не может быть удовлетворено по крайней мере одним из входящих серверов.

ResponseCode RESPONSE_IM_A_TEAPOT = 418

Код статуса HTTP 418 Я чайник. Любая попытка заварить кофе с помощью чайника должна привести к коду ошибки "418 Я чайник". Результирующее тело сущности МОЖЕТ быть коротким и толстым.

ResponseCode RESPONSE_MISDIRECTED_REQUEST = 421

Код статуса HTTP 421 Неправильно направленный запрос. Запрос был направлен на сервер, который не может выдать ответ. Это может быть отправлено сервером, который не настроен на выдачу ответов для комбинации схемы и полномочий, которые включены в URI запроса.

ResponseCode RESPONSE_UNPROCESSABLE_ENTITY = 422

Код статуса HTTP 422 Unprocessable Entity (WebDAV). Сервер понимает тип содержимого сущности запроса (поэтому код статуса 415 Unsupported Media Type недопустим), а синтаксис сущности запроса правильный (поэтому код статуса 400 Bad Request недопустим), но не смог обработать содержащиеся инструкции.

ResponseCode RESPONSE_LOCKED = 423

Код статуса HTTP 423 Заблокировано (WebDAV). Исходный или целевой ресурс метода заблокирован.

ResponseCode RESPONSE_FAILED_DEPENDENCY = 424

Код статуса HTTP 424 Неудачная зависимость (WebDAV). Метод не может быть выполнен на ресурсе, поскольку запрошенное действие зависело от другого действия, а это действие не удалось.

ResponseCode RESPONSE_UPGRADE_REQUIRED = 426

Код статуса HTTP 426 Требуется обновление. Сервер отказывается выполнять запрос с использованием текущего протокола, но может быть готов сделать это после того, как клиент обновит протокол до другого.

ResponseCode RESPONSE_PRECONDITION_REQUIRED = 428

Код статуса HTTP 428 Требуется предварительное условие. Исходный сервер требует, чтобы запрос был условным.

ResponseCode RESPONSE_TOO_MANY_REQUESTS = 429

Код статуса HTTP 429 Слишком много запросов. Пользователь отправил слишком много запросов за указанный промежуток времени (см. «ограничение скорости»). Отступите и увеличьте время между запросами или повторите попытку позже.

ResponseCode RESPONSE_REQUEST_HEADER_FIELDS_TOO_LARGE = 431

Код статуса HTTP 431 Поля заголовка запроса слишком велики. Сервер не желает обрабатывать запрос, поскольку поля заголовка слишком велики. Запрос МОЖЕТ быть отправлен повторно после уменьшения размера полей заголовка запроса.

Код статуса HTTP 451 Ответ недоступен по юридическим причинам. Сервер отказывает в доступе к ресурсу в связи с юридическим требованием.

ResponseCode RESPONSE_INTERNAL_SERVER_ERROR = 500

Код статуса HTTP 500 Внутренняя ошибка сервера. Сервер столкнулся с непредвиденным условием, которое не позволило выполнить запрос.

ResponseCode RESPONSE_NOT_IMPLEMENTED = 501

Код статуса HTTP 501 Не реализовано. Сервер не поддерживает функциональность, необходимую для выполнения запроса.

ResponseCode RESPONSE_BAD_GATEWAY = 502

Код статуса HTTP 502 Bad Gateway. Сервер, выступая в качестве шлюза или прокси, получил недопустимый ответ от входящего сервера, к которому он обращался при попытке выполнить запрос. Обычно возвращается балансировщиками нагрузки или прокси.

ResponseCode RESPONSE_SERVICE_UNAVAILABLE = 503

Код статуса HTTP 503 Service Unavailable. В настоящее время сервер не может обработать запрос из-за временной перегрузки или планового обслуживания, которое, скорее всего, будет устранено после некоторой задержки. Повторите попытку позже.

ResponseCode RESPONSE_GATEWAY_TIMEOUT = 504

Код статуса HTTP 504 Gateway Timeout. Сервер, выступая в качестве шлюза или прокси-сервера, не получил своевременного ответа от вышестоящего сервера, к которому ему нужно было получить доступ для выполнения запроса. Обычно возвращается балансировщиками нагрузки или прокси-серверами.

ResponseCode RESPONSE_HTTP_VERSION_NOT_SUPPORTED = 505

Код статуса HTTP 505 Версия HTTP не поддерживается. Сервер не поддерживает или отказывается поддерживать основную версию HTTP, которая использовалась в сообщении запроса.

ResponseCode RESPONSE_VARIANT_ALSO_NEGOTIATES = 506

Код статуса HTTP 506 Вариант также согласовывает. На сервере произошла внутренняя ошибка конфигурации: выбранный вариантный ресурс настроен на участие в прозрачном согласовании контента и, следовательно, не является надлежащей конечной точкой в процессе согласования.

ResponseCode RESPONSE_INSUFFICIENT_STORAGE = 507

Код статуса HTTP 507 Недостаточно места на диске. Метод не может быть выполнен на ресурсе, поскольку сервер не может сохранить представление, необходимое для успешного выполнения запроса.

ResponseCode RESPONSE_LOOP_DETECTED = 508

Код статуса HTTP 508 Loop Detected. Сервер завершил операцию, поскольку обнаружил бесконечный цикл при обработке запроса с "Depth: infinity". Этот статус указывает на то, что вся операция не удалась.

ResponseCode RESPONSE_NOT_EXTENDED = 510

Код статуса HTTP 510 Not Extended. Политика доступа к ресурсу не была соблюдена в запросе. Сервер должен отправить обратно всю информацию, необходимую клиенту для выдачи расширенного запроса.

ResponseCode RESPONSE_NETWORK_AUTH_REQUIRED = 511

Код статуса HTTP 511 Требуется сетевая аутентификация. Клиенту необходимо пройти аутентификацию, чтобы получить доступ к сети.


Описания свойств

bool blocking_mode_enabled = false 🔗

  • void set_blocking_mode(value: bool)

  • bool is_blocking_mode_enabled()

Если true, выполнение будет заблокировано до тех пор, пока все данные не будут прочитаны из ответа.


StreamPeer connection 🔗

Соединение, которое будет использоваться для этого клиента.


int read_chunk_size = 65536 🔗

  • void set_read_chunk_size(value: int)

  • int get_read_chunk_size()

Размер используемого буфера и максимальное количество байтов для чтения за одну итерацию. См. read_response_body_chunk().


Описания метода

void close() 🔗

Закрывает текущее соединение, позволяя повторно использовать этот HTTPClient.


Error connect_to_host(host: String, port: int = -1, tls_options: TLSOptions = null) 🔗

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

Если port не указан (или используется -1, он автоматически устанавливается на 80 для HTTP и 443 для HTTPS. Вы можете передать необязательный параметр tls_options, чтобы настроить доверенные центры сертификации или проверку общего имени при использовании HTTPS. См. TLSOptions.client() и TLSOptions.client_unsafe().


int get_response_body_length() const 🔗

Возвращает длину тела ответа.

Примечание: Некоторые веб-серверы могут не отправлять длину тела. В этом случае возвращаемое значение будет -1. При использовании кодирования передачи по частям длина тела также будет -1.

Примечание: Эта функция всегда возвращает -1 на веб-платформе из-за ограничений браузеров.


int get_response_code() const 🔗

Возвращает код статуса HTTP ответа.


PackedStringArray get_response_headers() 🔗

Возвращает заголовки ответа.


Dictionary get_response_headers_as_dictionary() 🔗

Возвращает все заголовки ответа в виде Dictionary. Каждая запись состоит из имени заголовка и String, содержащей значения, разделенные "; ". Регистр сохраняется таким же, как и при получении заголовков.

{
    "content-length": 12,
    "Content-Type": "application/json; charset=UTF-8",
}

Status get_status() const 🔗

Возвращает константу Status. Необходимо вызвать poll(), чтобы получить обновления статуса.


bool has_response() const 🔗

Если true, этот HTTPClient имеет доступный ответ.


bool is_response_chunked() const 🔗

Если true, этот HTTPClient имеет ответ, который разбит на фрагменты.


Error poll() 🔗

Это необходимо вызвать, чтобы обработать любой запрос. Проверьте результаты с помощью get_status().


String query_string_from_dict(fields: Dictionary) 🔗

Формирует строку запроса в стиле GET/POST application/x-www-form-urlencoded из предоставленного словаря, например:

var fields = { "username": "user", "password": "pass" }
var query_string = http_client.query_string_from_dict(fields)
# Возвращает "username=user&password=pass"

Более того, если ключ имеет значение null, добавляется только сам ключ, без знака равенства и значения. Если значение — массив, для каждого значения в нём добавляется пара с тем же ключом.

var fields = { "single": 123, "not_valued": null, "multiple": [22, 33, 44] }
var query_string = http_client.query_string_from_dict(fields)
# Возвращает "single=123&not_valued&multiple=22&multiple=33&multiple=44"

PackedByteArray read_response_body_chunk() 🔗

Считывает один фрагмент ответа.


Error request(method: Method, url: String, headers: PackedStringArray, body: String = "") 🔗

Отправляет HTTP-запрос к подключенному хосту с заданным методом method.

Параметр URL обычно представляет собой только часть, следующую за хостом, например, для https://example.com/index.php это /index.php. При отправке запросов к HTTP-прокси-серверу это должен быть абсолютный URL. Для запросов METHOD_OPTIONS также допускается *. Для запросов METHOD_CONNECT это должен быть компонент полномочий (host:port).

headers — это заголовки HTTP-запроса.

Чтобы создать POST-запрос со строками запроса для отправки на сервер, выполните:

var fields = { "username": "user", "password": "pass" }
var query_string = http_client.query_string_from_dict(fields)
var headers = ["Content-Type: application/x-www-form-urlencoded", "Content-Length: " + str(query_string.length())]
var result = http_client.request(http_client.METHOD_POST, "/index.php", headers, query_string)

Примечание: Параметр body игнорируется, если method — это METHOD_GET. Это связано с тем, что методы GET не могут содержать данные запроса. В качестве обходного решения можно передать данные запроса в виде строки запроса в URL. См. пример в String.uri_encode().


Error request_raw(method: Method, url: String, headers: PackedStringArray, body: PackedByteArray) 🔗

Отправляет необработанный HTTP-запрос на подключенный хост с заданным method.

Параметр URL обычно представляет собой только часть после хоста, поэтому для https://example.com/index.php это /index.php. При отправке запросов на HTTP-прокси-сервер это должен быть абсолютный URL. Для запросов METHOD_OPTIONS также допускается *. Для запросов METHOD_CONNECT это должен быть компонент полномочий (host:port).

headers — это заголовки HTTP-запроса.

Отправляет данные body необработанными, как массив байтов, и никак их не кодирует.


void set_http_proxy(host: String, port: int) 🔗

Устанавливает прокси-сервер для HTTP-запросов.

Прокси-сервер не установлен, если host пуст или port равен -1.


void set_https_proxy(host: String, port: int) 🔗

Устанавливает прокси-сервер для HTTPS-запросов.

Прокси-сервер не установлен, если host пуст или port равен -1.