Spec-Zone.ru › Dart 2

dart:io

Класс HttpClient

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

Отправляет HTTP-запросы HTTP-серверу и получает ответы. Сохраняет состояние, включая куки сессии и другие куки, между несколькими запросами к одному серверу.

Примечание: HttpClient предоставляет низкоуровневую HTTP-функциональность. Рекомендуется начинать с более удобных и композируемых API, которые можно найти в package:http.

HttpClient содержит ряд методов для отправки HttpClientRequest на HTTP-сервер и получения HttpClientResponse обратно. Например, вы можете использовать методы get, getUrl, post и postUrl для запросов GET и POST соответственно.

Пример простого запроса GET

Запрос GET — это двухэтапный процесс, инициируемый двумя Future объектами. Когда первый Future завершается с HttpClientRequest, базовое сетевое подключение установлено, но данные еще не отправлены. В функции обратного вызова для первого Future можно установить HTTP-заголовки и тело в запросе. Отправка запроса серверу происходит либо при первом записи в объект запроса, либо при вызове close.

Когда сервер получает HTTP-ответ, второй Future, возвращаемый методом close, завершается с объектом HttpClientResponse. Этот объект предоставляет доступ к заголовкам и телу ответа. Тело доступно как поток, реализованный с помощью HttpClientResponse. Если тело присутствует, оно должно быть прочитано. В противном случае это может привести к утечке ресурсов. В случае если тело не используется, рассмотрите использование HttpClientResponse.drain.

var client = HttpClient();
try {
  HttpClientRequest request = await client.get('localhost', 80, '/file.txt');
  // Optionally set up headers...
  // Optionally write to the request object...
  HttpClientResponse response = await request.close();
  // Process the response
  final stringData = await response.transform(utf8.decoder).join();
  print(stringData);
} finally {
  client.close();
}

Future для HttpClientRequest создается методами, такими как getUrl и open.

Подключения HTTPS

Класс HttpClient может выполнять запросы HTTPS, подключаясь к серверу с помощью безопасного сетевого протокола TLS (SSL). Вызов getUrl со схемой https: будет работать автоматически, если сертификат сервера подписан корневым центром сертификации (certificate authority) в стандартном списке известных доверенных центров сертификации, составленном Mozilla.

Чтобы добавить собственный доверенный центр сертификации или отправить клиенту сертификат для серверов, которые его запрашивают, передайте объект SecurityContext в качестве необязательного context аргумента конструктору HttpClient. Необходимые параметры безопасности можно настроить в объекте SecurityContext.

Заголовки

Все HttpClient запросы по умолчанию устанавливают следующий заголовок:

Accept-Encoding: gzip

Это позволяет HTTP-серверу использовать сжатие gzip для тела, если это возможно. Если этого поведения не требуется, установите заголовок Accept-Encoding на другое значение. Чтобы отключить сжатие gzip ответа, очистите этот заголовок:

request.headers.removeAll(HttpHeaders.acceptEncodingHeader)

Закрытие объекта HttpClient

HttpClient поддерживает постоянные подключения и кеширует сетевые соединения для их повторного использования при многократном запросе. Это означает, что сетевые соединения могут оставаться открытыми некоторое время после завершения запроса. Используйте HttpClient.close, чтобы заставить объект HttpClient завершить работу и закрыть неиспользуемые сетевые соединения.

Включение и отключение прокси-серверов

По умолчанию HttpClient использует конфигурацию прокси, доступную из среды, см. findProxyFromEnvironment. Чтобы отключить использование прокси-серверов, установите свойство findProxy в null.

HttpClient client = HttpClient();
client.findProxy = null;

Конструкторы

HttpClient({SecurityContext? context})
factory

Свойства

authenticate ← (Future<bool> Function?(Uri url, String scheme, String? realm)?)
только для записи
Устанавливает функцию, вызываемую при запросе аутентификации на сайте.
authenticateProxy ← (Future<bool> Function?(String host, int port, String scheme, String? realm)?)
только для записи
Устанавливает функцию, вызываемую при запросе аутентификации на прокси-сервере.
autoUncompress ↔ bool
чтение/запись
Получает и устанавливает, будет ли тело ответа автоматически распаковываться.
badCertificateCallback ← (bool Function?(X509Certificate cert, String host, int port)?)
только для записи
Устанавливает функцию обратного вызова, которая определит, следует ли принимать безопасное соединение с сертификатом сервера, который не может быть аутентифицирован ни одним из наших доверенных корневых сертификатов.
connectionFactory ← (Future<ConnectionTask<Socket>> Function?(Uri url, String? proxyHost, int? proxyPort)?)
только для записи
Устанавливает функцию, используемую для создания сокетных подключений.
connectionTimeout ↔ Duration?
чтение/запись
Получает и устанавливает таймаут подключения.
findProxy ← (String Function?(Uri url)?)
только для записи
Устанавливает функцию, используемую для поиска прокси-сервера, который будет использоваться для открытия HTTP-соединения к указанному url. Если эта функция не установлена, прямые подключения всегда будут использоваться.
hashCode → int
только для чтения, унаследованное
Код хеширования этого объекта.
idleTimeout ↔ Duration
чтение/запись
Получает и устанавливает таймаут простоя неактивных постоянных (keep-alive) соединений.
keyLog ← (dynamic Function?(String line)?)
только для записи
Устанавливает функцию обратного вызова, которая будет вызываться при обмене новыми TLS-ключами с сервером. Она получит одну строку текста в формате NSS Key Log Format для каждого вызова. Запись этих строк в файл позволит инструментам (таким как Wireshark) расшифровать общение между этим клиентом и сервером. Это предназначено для отладки сетевого уровня безопасных сокетов и не должно использоваться в коде для производства. Например:
maxConnectionsPerHost ↔ int?
чтение/запись
Получает и устанавливает максимальное количество активных соединений с одним хостом.
runtimeType → Type
только для чтения, унаследованное
Представление типа объекта во время выполнения.
userAgent ↔ String?
чтение/запись
Получает и устанавливает значение заголовка User-Agent по умолчанию для всех запросов, генерируемых этим HttpClient.

Методы

addCredentials(Uri url, String realm, HttpClientCredentials credentials) → void
Добавить учетные данные для авторизации HTTP-запросов.
addProxyCredentials(String host, int port, String realm, HttpClientCredentials credentials) → void
Добавить учетные данные для авторизации HTTP-прокси.
close({bool force = false}) → void
Закрыть HTTP-клиент.
delete(String host, int port, String path) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом DELETE.
deleteUrl(Uri url) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом DELETE.
get(String host, int port, String path) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом GET.
getUrl(Uri url) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом GET.
head(String host, int port, String path) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом HEAD.
headUrl(Uri url) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом HEAD.
noSuchMethod(Invocation invocation) → dynamic
inherited
Вызывается при попытке доступа к несуществующему методу или свойству.
open(String method, String host, int port, String path) → Future<HttpClientRequest>
Открыть HTTP-соединение.
openUrl(String method, Uri url) → Future<HttpClientRequest>
Открыть HTTP-соединение.
patch(String host, int port, String path) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом PATCH.
patchUrl(Uri url) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом PATCH.
post(String host, int port, String path) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом POST.
postUrl(Uri url) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом POST.
put(String host, int port, String path) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом PUT.
putUrl(Uri url) → Future<HttpClientRequest>
Открыть HTTP-соединение с методом PUT.
toString() → String
inherited
Строковое представление этого объекта.

Операторы

operator ==(Object other) → bool
inherited
Оператор равенства.

Статические свойства

enableTimelineLogging ↔ bool
чтение / запись
Текущее состояние регистрации HTTP-запросов всех HttpClient в журнале разработчика.

Статические методы

findProxyFromEnvironment(Uri url, {Map<String, String>? environment}) → String
Функция для определения прокси-сервера, используемого для HTTP-соединения, из конфигурации прокси, указанной через переменные окружения.

Константы

defaultHttpPort → const int
80
defaultHttpsPort → const int
443

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-io/HttpClient-class.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API