HttpClient
Низкоуровневый HTTP-клиент с ручным опросом состояния.
Управляет подключением и чтением HTTP. После ConnectToHost вызывайте Poll, дождитесь Connected, передайте Request и читайте тело в состоянии Body. Полный URL, путь запроса и параметры TLS — разные части настройки.
Пустая часть не доказывает завершение, а неизвестная длина -1 не означает пустое тело. Проверяйте framing, статус и ошибки. HttpClient не выполняет распаковку и перенаправления HttpRequest автоматически. Не блокируйте главный поток ожиданием сети; задайте свой срок ожидания и бюджет собранных данных.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
HttpClientКонструктор
public HttpClient();Свойства3
BlockingModeEnabledСвойство
public bool BlockingModeEnabled { get; set; }Если true, выполнение будет заблокировано до тех пор, пока все данные не будут прочитаны из ответа.
ConnectionСвойство
public StreamPeer Connection { get; set; }Соединение, которое будет использоваться для этого клиента.
ReadChunkSizeСвойство
public int ReadChunkSize { get; set; }Размер обычного чтения; не гарантия верхней границы каждого внутреннего HTTP chunk-буфера. Отдельно ограничивайте накопленный и распакованный результат.
Методы24
Closevoid
public void Close();Закрывает соединение и сбрасывает сетевое состояние. Согласуйте отмену/завершение и время жизни владельца отдельно.
ConnectToHostError
public Error ConnectToHost(string host, int port = -1, TlsOptions tlsOptions = null);Начинает подключение к host/port. Продолжайте Poll до нужного состояния; Error.Ok не подтверждает завершение TCP/TLS. HTTPS требует клиентских TLS-параметров или схемы https.
| Имя | Тип | По умолчанию |
|---|---|---|
host | string | — |
port | int | -1 |
tlsOptions | TlsOptions | null |
ErrorGetConnectionStreamPeer
public StreamPeer GetConnection();StreamPeerGetReadChunkSizeint
public int GetReadChunkSize();intGetResponseBodyLengthlong
public long GetResponseBodyLength();Возвращает известную длину тела или -1, когда она заранее не определена. Сопоставляйте с chunked/EOF и фактически полученными байтами.
longGetResponseCodeint
public int GetResponseCode();Возвращает код статуса HTTP ответа.
intGetResponseHeadersstring[]
public string[] GetResponseHeaders();Возвращает заголовки ответа.
string[]GetResponseHeadersAsDictionaryReckfell.Collections.Dictionary
public Reckfell.Collections.Dictionary GetResponseHeadersAsDictionary();Возвращает все заголовки ответа в виде Reckfell.Collections.Dictionary. Каждая запись состоит из имени заголовка и string, содержащей значения, разделенные "; ". Регистр сохраняется таким же, как и при получении заголовков.
{
"content-length": 12,
"Content-Type": "application/json; charset=UTF-8",
}Reckfell.Collections.DictionaryGetStatusHttpClient.Status
public HttpClient.Status GetStatus();Возвращает константу HttpClient.Status. Необходимо вызвать HttpClient.Poll, чтобы получить обновления статуса.
HttpClient.StatusHasResponsebool
public bool HasResponse();Если true, этот HttpClient имеет доступный ответ.
boolIsBlockingModeEnabledbool
public bool IsBlockingModeEnabled();boolIsResponseChunkedbool
public bool IsResponseChunked();Если true, этот HttpClient имеет ответ, который разбит на фрагменты.
boolPollError
public Error Poll();Продвигает подключение/обмен. Вызывайте регулярно, не блокируя главный поток циклом ожидания. Проверяйте и Error, и GetStatus.
ErrorQueryStringFromDictstring
public string QueryStringFromDict(Reckfell.Collections.Dictionary fields);Кодирует ключи/значения query. Составляйте query отдельно от host/пути; не добавляет систему авторизации или проверки бизнес-данных.
| Имя | Тип | По умолчанию |
|---|---|---|
fields | Reckfell.Collections.Dictionary | — |
stringReadResponseBodyChunkbyte[]
public byte[] ReadResponseBodyChunk();Читает часть тела в состоянии Body. Пустой массив может означать ожидание следующей части. Не декодируйте каждый фрагмент как отдельный UTF-8 текст.
byte[]Request2 перегрузки
public Error Request(HttpClient.Method method, string url, ReadOnlySpan<string> headers, string body);Отправляет метод и путь запроса с query в подключённом состоянии. Это не полный URL. Строковое тело кодируется в UTF-8.
| Имя | Тип | По умолчанию |
|---|---|---|
method | HttpClient.Method | — |
url | string | — |
headers | ReadOnlySpan<string> | — |
body | string | — |
Errorpublic Error Request(HttpClient.Method method, string url, string[] headers, string body = "");Отправляет метод и путь запроса с query в подключённом состоянии. Это не полный URL. Строковое тело кодируется в UTF-8.
| Имя | Тип | По умолчанию |
|---|---|---|
method | HttpClient.Method | — |
url | string | — |
headers | string[] | — |
body | string | "" |
ErrorRequestRaw2 перегрузки
public Error RequestRaw(HttpClient.Method method, string url, ReadOnlySpan<string> headers, ReadOnlySpan<byte> body);Отправляет необработанный HTTP-запрос на подключенный хост с заданным method.
Параметр URL обычно представляет собой только часть после хоста, поэтому для https://example.com/index.php это /index.php. При отправке запросов на HTTP-прокси-сервер это должен быть абсолютный URL. Для запросов HttpClient.Method.Options также допускается *. Для запросов HttpClient.Method.Connect это должен быть компонент полномочий (host:port).
headers — это заголовки HTTP-запроса.
Отправляет данные body необработанными, как массив байтов, и никак их не кодирует.
| Имя | Тип | По умолчанию |
|---|---|---|
method | HttpClient.Method | — |
url | string | — |
headers | ReadOnlySpan<string> | — |
body | ReadOnlySpan<byte> | — |
Errorpublic Error RequestRaw(HttpClient.Method method, string url, string[] headers, byte[] body);Отправляет необработанный HTTP-запрос на подключенный хост с заданным method.
Параметр URL обычно представляет собой только часть после хоста, поэтому для https://example.com/index.php это /index.php. При отправке запросов на HTTP-прокси-сервер это должен быть абсолютный URL. Для запросов HttpClient.Method.Options также допускается *. Для запросов HttpClient.Method.Connect это должен быть компонент полномочий (host:port).
headers — это заголовки HTTP-запроса.
Отправляет данные body необработанными, как массив байтов, и никак их не кодирует.
| Имя | Тип | По умолчанию |
|---|---|---|
method | HttpClient.Method | — |
url | string | — |
headers | string[] | — |
body | byte[] | — |
ErrorSetBlockingModevoid
public void SetBlockingMode(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetConnectionvoid
public void SetConnection(StreamPeer connection);| Имя | Тип | По умолчанию |
|---|---|---|
connection | StreamPeer | — |
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 | — |
SetReadChunkSizevoid
public void SetReadChunkSize(int bytes);| Имя | Тип | По умолчанию |
|---|---|---|
bytes | int | — |
HttpClient.Method
| Значение | Описание |
|---|---|
Connect = 7 | Метод СТРУКТУРА. Метод CONNECT устанавливает туннель к серверу, идентифицированному целевым ресурсом. Используется редко. Методы |
Delete = 4 | Метод ХТТТ ДЕЛЕТ. Метод DELETE запрашивает удаление указанного ресурса. МЕТОДЫ |
Get = 0 | Метод HTTP получает. Метод GET запрашивает представление указанного ресурса. Запросы с использованием GET должны только извлекать данные. |
Head = 1 | Метод ГРУЗОВАЯ ЧАСТЬ. Метод HEAD запрашивает ответ, идентичный ответу запроса GET, но без тела ответа. Это полезно для запроса метаданных, таких как заголовки HTTP, или для проверки существования ресурса. |
Max = 9 | Представляет размер перечисления |
Options = 5 | Метод ВАРИАНТЫ ПРАКТИЧЕСКИХ ВАРИАНТОВ. Метод OPTIONS запрашивает описание параметров связи для целевого ресурса. Используется редко. *МethoD_TRACE |
Patch = 8 | Метод ТОЛКА. Метод PATCH используется для применения частичных изменений к ресурсу. |
Post = 2 | Метод ДОЛЖНОСТНЫЕ ЛИЦА. Метод POST используется для отправки сущности на указанный ресурс, часто вызывая изменение состояния или побочные эффекты на сервере. Это часто используется для форм и отправки данных или загрузки файлов. |
Put = 3 | Метод HTTP PUT. Метод PUT запрашивает замену всех текущих представлений целевого ресурса полезной нагрузкой запроса. (Вы можете думать о POST как о «создании или обновлении», а PUT как о «обновлении», хотя многие сервисы, как правило, не делают четкого различия или не меняют их значение). |
Trace = 6 | Метод HTTP Трейс. Метод TRACE выполняет проверку обратной связи сообщения по пути к целевому ресурсу. Возвращает весь полученный HTTP-запрос в теле ответа. Используется редко. Методы |
HttpClient.ResponseCode
| Значение | Описание |
|---|---|
Accepted = 202 | Код статуса HTTP |
AlreadyReported = 208 | Код статуса HTTP |
BadGateway = 502 | Код статуса HTTP |
BadRequest = 400 | Код статуса HTTP |
Conflict = 409 | Код статуса HTTP *Отвечай * |
Continue = 100 | Код статуса HTTP Отвечай Весело_протокол |
Created = 201 | Код статуса HTTP |
ExpectationFailed = 417 | Код статуса HTTP |
FailedDependency = 424 | Код состояния HTTP |
Forbidden = 403 | Код статуса HTTP |
Found = 302 | Код статуса HTTP |
GatewayTimeout = 504 | Код статуса HTTP |
Gone = 410 | Код статуса HTTP |
HttpVersionNotSupported = 505 | Код состояния HTTP *Отвечай ВАРИАНТ_АЛСО_ НЕГОТИТЫ |
ImATeapot = 418 | Код состояния HTTP |
ImUsed = 226 | Код статуса HTTP |
InsufficientStorage = 507 | Код состояния HTTP |
InternalServerError = 500 | Код состояния HTTP |
LengthRequired = 411 | Код статуса HTTP |
Locked = 423 | Код состояния HTTP Ответ Удалённый |
LoopDetected = 508 | Код статуса HTTP |
MethodNotAllowed = 405 | Код статуса HTTP |
MisdirectedRequest = 421 | Код состояния HTTP ОТВЕТЫ НА НЕОБХОДИМОСТЬ |
MovedPermanently = 301 | Код статуса HTTP |
MultiStatus = 207 | Код статуса HTTP Ответ Спасибо Возвращение |
MultipleChoices = 300 | HTTP-код статуса Ответ Вскоре |
NetworkAuthRequired = 511 | Код состояния HTTP |
NoContent = 204 | Код статуса HTTP |
NonAuthoritativeInformation = 203 | Код статуса HTTP |
NotAcceptable = 406 | Код статуса HTTP |
NotExtended = 510 | Код статуса HTTP |
NotFound = 404 | Код статуса HTTP |
NotImplemented = 501 | Код состояния HTTP |
NotModified = 304 | Код состояния HTTP Отвечай потому что |
Ok = 200 | Код статуса HTTP
|
PartialContent = 206 | Код статуса HTTP |
PaymentRequired = 402 | Код статуса HTTP Отвечай |
PermanentRedirect = 308 | Код статуса HTTP Отвечай |
PreconditionFailed = 412 | Код статуса HTTP |
PreconditionRequired = 428 | Код состояния HTTP
|
Processing = 102 | Код статуса HTTP Отвечай |
ProxyAuthenticationRequired = 407 | Код статуса HTTP |
RequestEntityTooLarge = 413 | Код статуса HTTP |
RequestHeaderFieldsTooLarge = 431 | Код состояния HTTP |
RequestTimeout = 408 | Код статуса HTTP |
RequestUriTooLong = 414 | Код статуса HTTP |
RequestedRangeNotSatisfiable = 416 | Код состояния HTTP |
ResetContent = 205 | Код статуса HTTP |
SeeOther = 303 | Код статуса HTTP |
ServiceUnavailable = 503 | Код статуса HTTP ВРЕМЯ |
SwitchProxy = 306 | Код состояния HTTP Отвечай ТЕМПЕРАТУРНЫЙ_ ПОЛИТИВЫЙ |
SwitchingProtocols = 101 | Код статуса HTTP |
TemporaryRedirect = 307 | Код статуса HTTP |
TooManyRequests = 429 | Код состояния HTTP |
Unauthorized = 401 | Код статуса HTTP |
UnavailableForLegalReasons = 451 | Код состояния HTTP ОТВЕЧАЮЩАЯ СВЯЗЬ С ТЕРРОРИЗМОМ |
UnprocessableEntity = 422 | Код статуса HTTP |
UnsupportedMediaType = 415 | Код состояния HTTP |
UpgradeRequired = 426 | Код состояния HTTP |
UseProxy = 305 | Код состояния HTTP |
VariantAlsoNegotiates = 506 | Код состояния HTTP |
HttpClient.Status
| Значение | Описание |
|---|---|
Body = 7 | Статус: получено тело HTTP. СОСТОЯНИЕ КОНТРОЛЬ НА ТЕРРОРИЗМ |
CantConnect = 4 | Статус: Невозможно подключиться к серверу. СОСТОЯНИЕ СОСТОЯНИЯ |
CantResolve = 2 | Статус: Ошибка DNS: Невозможно определить имя хоста для указанного URL. |
Connected = 5 | Статус: Соединение установлено. СОСТОЯНИЕ |
Connecting = 3 | Статус: В настоящее время выполняется подключение к серверу. |
ConnectionError = 8 | Статус: Ошибка HTTP-соединения. |
Disconnected = 0 | Статус: Отключено от сервера. Статут |
Requesting = 6 | Статус: В настоящее время отправляется запрос. |
Resolving = 1 | Статус: В настоящее время выполняется преобразование имени хоста для указанного URL в IP-адрес. |
TlsHandshakeError = 9 | Статус: Ошибка при установлении связи TLS. |