HttpRequest
Асинхронный HTTP-запрос с сигналом завершения.
HttpRequest должен находиться в EntityTree. Один экземпляр обслуживает один запрос одновременно. Error из Request/RequestRaw описывает запуск; RequestCompleted сообщает отдельные result, responseCode, headers и body.
Result.Success означает успешную передачу, а не обязательно HTTP 2xx, корректный JSON или выполненную операцию приложения. Проверяйте все нужные уровни. Ограничивайте Timeout/BodySizeLimit и задавайте политику перенаправлений. CancelRequest не выдаёт завершение отмены автоматически; согласуйте время жизни UI и владельца запроса.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
HttpRequestКонструктор
public HttpRequest();Свойства9
AcceptGZipСвойство
public bool AcceptGZip { get; set; }Запрашивает gzip/deflate, если Accept-Encoding не указан, и включает обработку соответствующего Content-Encoding ответа. Лимит распакованных данных остаётся необходимым.
AppendToDownloadFileСвойство
public bool AppendToDownloadFile { get; set; }Разрешает продолжение записи при подходящем ответе Partial Content. Не заменяет проверку Range/Content-Range и идентичности уже скачанного файла.
BodySizeLimitСвойство
public int BodySizeLimit { get; set; }Лимит тела в байтах; -1 отключает лимит. При автоматической распаковке ограничивается также итоговое распакованное тело. Для внешних ответов задавайте явный бюджет.
DownloadChunkSizeСвойство
public int DownloadChunkSize { get; set; }Размер используемого буфера и максимальное количество байтов для чтения за одну итерацию. См. HttpClient.ReadChunkSize.
Установите меньшее значение (например, 4096 для 4 КиБ) при загрузке небольших файлов, чтобы уменьшить использование памяти за счет скорости загрузки.
DownloadFileСвойство
public string DownloadFile { get; set; }Путь записи тела ответа вместо хранения его в body сигнала. Успешная запись не подтверждает HTTP 2xx или пригодность содержимого; сначала используйте временный файл.
KeepPartialDownloadСвойство
public bool KeepPartialDownload { get; set; }Сохраняет незавершённый файл при остановке запроса. Частичный файл не считается готовым ресурсом; проверяйте длину/содержимое перед использованием.
MaxRedirectsСвойство
public int MaxRedirects { get; set; }Предел автоматических перенаправлений; 0 запрещает их, -1 отключает предел. Проверяйте адрес, метод и заголовки при переходах.
TimeoutСвойство
public double Timeout { get; set; }Срок ожидания в секундах; 0 отключает тайм-аут. Встроенный Timer игнорирует TimeScale, однако его обработка зависит от EntityTree/паузы.
UseThreadsСвойство
public bool UseThreads { get; set; }Включает внутренний рабочий поток, если сборка его поддерживает. Не делает ваши обработчики или доступ к EntityTree автоматически потокобезопасными.
Методы29
CancelRequestvoid
public void CancelRequest();Останавливает текущий запрос; сам по себе не выдаёт RequestCompleted для отмены. При файловой загрузке очистка зависит от завершённости и KeepPartialDownload.
GetBodySizeint
public int GetBodySize();Возвращает длину тела запроса.
Примечание: Некоторые веб-серверы могут не отправлять длину тела. В этом случае возвращаемое значение будет -1. При использовании кодирования передачи по частям длина тела также будет -1.
intGetBodySizeLimitint
public int GetBodySizeLimit();intGetDownloadChunkSizeint
public int GetDownloadChunkSize();intGetDownloadFilestring
public string GetDownloadFile();stringGetDownloadedBytesint
public int GetDownloadedBytes();Возвращает количество байтов HTTPRequest скачаны.
intGetHttpClientStatusHttpClient.Status
public HttpClient.Status GetHttpClientStatus();Возвращает текущий статус базового HttpClient.
HttpClient.StatusGetMaxRedirectsint
public int GetMaxRedirects();intGetTimeoutdouble
public double GetTimeout();doubleIsAcceptingGZipbool
public bool IsAcceptingGZip();boolIsAppendingToDownloadFilebool
public bool IsAppendingToDownloadFile();boolIsKeepingPartialDownloadbool
public bool IsKeepingPartialDownload();boolIsUsingThreadsbool
public bool IsUsingThreads();boolRequest2 перегрузки
public Error Request(string url, ReadOnlySpan<string> customHeaders, HttpClient.Method method, string requestData);Запускает HTTP-запрос; строковое тело кодируется в UTF-8. Требует дерево и свободный экземпляр. Error.Ok не означает полученный HTTP 2xx: результат проверяется в RequestCompleted.
| Имя | Тип | По умолчанию |
|---|---|---|
url | string | — |
customHeaders | ReadOnlySpan<string> | — |
method | HttpClient.Method | — |
requestData | string | — |
Errorpublic Error Request(string url, string[] customHeaders = null, HttpClient.Method method = HttpClient.Method.Get, string requestData = "");Запускает HTTP-запрос; строковое тело кодируется в UTF-8. Требует дерево и свободный экземпляр. Error.Ok не означает полученный HTTP 2xx: результат проверяется в RequestCompleted.
| Имя | Тип | По умолчанию |
|---|---|---|
url | string | — |
customHeaders | string[] | null |
method | HttpClient.Method | HttpClient.Method.Get |
requestData | string | "" |
customHeadersЕсли параметр не имеет значения, то значение по умолчанию: Array.Empty<string>().
ErrorRequestRaw2 перегрузки
public Error RequestRaw(string url, ReadOnlySpan<string> customHeaders, HttpClient.Method method, ReadOnlySpan<byte> requestDataRaw);Отправляет точные байты тела. Метод и Content-Type должны соответствовать API. При неоднозначности перегрузок задайте типы массивов явно.
| Имя | Тип | По умолчанию |
|---|---|---|
url | string | — |
customHeaders | ReadOnlySpan<string> | — |
method | HttpClient.Method | — |
requestDataRaw | ReadOnlySpan<byte> | — |
Errorpublic Error RequestRaw(string url, string[] customHeaders = null, HttpClient.Method method = HttpClient.Method.Get, byte[] requestDataRaw = null);Отправляет точные байты тела. Метод и Content-Type должны соответствовать API. При неоднозначности перегрузок задайте типы массивов явно.
| Имя | Тип | По умолчанию |
|---|---|---|
url | string | — |
customHeaders | string[] | null |
method | HttpClient.Method | HttpClient.Method.Get |
requestDataRaw | byte[] | null |
customHeadersЕсли параметр не имеет значения, то значение по умолчанию: Array.Empty<string>().
requestDataRawЕсли параметр не имеет значения, то значение по умолчанию: Array.Empty<byte>().
ErrorSetAcceptGZipvoid
public void SetAcceptGZip(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetAppendToDownloadFilevoid
public void SetAppendToDownloadFile(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetBodySizeLimitvoid
public void SetBodySizeLimit(int bytes);| Имя | Тип | По умолчанию |
|---|---|---|
bytes | int | — |
SetDownloadChunkSizevoid
public void SetDownloadChunkSize(int chunkSize);| Имя | Тип | По умолчанию |
|---|---|---|
chunkSize | int | — |
SetDownloadFilevoid
public void SetDownloadFile(string path);| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
SetHttpProxyvoid
public void SetHttpProxy(string host, int port);Устанавливает прокси-сервер для HTTP-запросов.
Прокси-сервер не установлен, если host пуст или port равен -1.
| Имя | Тип | По умолчанию |
|---|---|---|
host | string | — |
port | int | — |
SetHttpsProxyvoid
public void SetHttpsProxy(string host, int port);Устанавливает прокси-сервер для HTTPS-запросов.
Прокси-сервер не установлен, если host пуст или port равен -1.
| Имя | Тип | По умолчанию |
|---|---|---|
host | string | — |
port | int | — |
SetKeepPartialDownloadvoid
public void SetKeepPartialDownload(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetMaxRedirectsvoid
public void SetMaxRedirects(int amount);| Имя | Тип | По умолчанию |
|---|---|---|
amount | int | — |
SetTimeoutvoid
public void SetTimeout(double timeout);| Имя | Тип | По умолчанию |
|---|---|---|
timeout | double | — |
SetTlsOptionsvoid
public void SetTlsOptions(TlsOptions clientOptions);Задаёт клиентские параметры для HTTPS. Используйте проверяющий Client; корректно загрузите собственный CA до запуска запроса.
| Имя | Тип | По умолчанию |
|---|---|---|
clientOptions | TlsOptions | — |
SetUseThreadsvoid
public void SetUseThreads(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
Сигналы и события1
RequestCompletedСобытие
public event HttpRequest.RequestCompletedEventHandler RequestCompleted;Сообщает результат передачи, HTTP-код, заголовки и байты тела. Result.Success возможен вместе с 404. При DownloadFile тело сохраняется в файл, а body остаётся пустым.
| Имя | Тип | По умолчанию |
|---|---|---|
result | long | — |
responseCode | long | — |
headers | string[] | — |
body | byte[] | — |
HttpRequest.Result
| Значение | Описание |
|---|---|
BodyDecompressFailed = 8 | Запрос не выполнен из-за ошибки при распаковке тела ответа. Возможные причины включают неподдерживаемый или неправильный формат сжатия, поврежденные данные или неполную передачу. |
BodySizeLimitExceeded = 7 | Запрос превысил максимальный размер, см. |
CantConnect = 2 | Запрос не удался при подключении. |
CantResolve = 3 | Запрос не удалось разрешить. |
ChunkedBodySizeMismatch = 1 | Запрос не выполнен из-за несоответствия между ожидаемым и фактическим размером фрагментированного тела во время передачи. Возможные причины включают сетевые ошибки, неправильную конфигурацию сервера или проблемы с фрагментированным кодированием. |
ConnectionError = 4 | Запрос не выполнен из-за ошибки соединения (чтение/запись). |
DownloadFileCantOpen = 10 | HTTPRequest не смог открыть загружаемый файл. |
DownloadFileWriteError = 11 | HTTPRequest не смог выполнить запись в загружаемый файл. |
NoResponse = 6 | Запрос не получил ответа (пока что). |
RedirectLimitReached = 12 | Запрос достиг максимального предела перенаправления, см. |
RequestFailed = 9 | Запрос не выполнен (в настоящее время не используется). |
Success = 0 | Запрос успешен. |
Timeout = 13 | Запрос не выполнен из-за тайм-аута. Если вы ожидаете, что запросы будут выполняться долго, попробуйте увеличить значение |
TlsHandshakeError = 5 | Запрос не выполнен при установлении связи TLS. |