Класс HttpClient
Клиент, получающий содержимое, такое как веб-страницы, от сервера с использованием протокола HTTP.
HttpClient содержит ряд методов для отправки HttpClientRequest на HTTP-сервер и получения HttpClientResponse обратно. Например, вы можете использовать методы get, getUrl, post и postUrl для запросов GET и POST соответственно.
Создание простого запроса GET: пример
Запрос getUrl — это двухэтапный процесс, инициируемый двумя объектами Future. Когда первый future завершается с HttpClientRequest, базовое сетевое соединение установлено, но данные ещё не отправлены. В функции обратного вызова для первого future можно установить заголовки HTTP и тело в запросе. Отправка запроса на сервер происходит либо при первом записи в объект запроса, либо при вызове close.
Когда сервер получает HTTP-ответ, второй future, возвращаемый методом close, завершается с объектом HttpClientResponse. Этот объект предоставляет доступ к заголовкам и телу ответа. Тело доступно как поток, реализованный в HttpClientResponse. Если тело присутствует, его необходимо прочитать. В противном случае это приведёт к утечке ресурсов. Используйте HttpClientResponse.drain, если тело не используется.
HttpClient client = new HttpClient();
client.getUrl(Uri.parse("http://www.example.com/"))
.then((HttpClientRequest request) {
// Optionally set up headers...
// Optionally write to the request object...
// Then call close.
...
return request.close();
})
.then((HttpClientResponse response) {
// Process the response.
...
});
Future для HttpClientRequest создаётся методами, такими как getUrl и open.
HTTPS-соединения
HttpClient может выполнять запросы HTTPS, подключаясь к серверу с использованием защищённого сетевого протокола TLS (SSL). Вызов getUrl со схемой https: будет работать автоматически, если сертификат сервера подписан центром сертификации (CA) из стандартного списка известных доверенных центров сертификации, составленного Mozilla.
Для добавления пользовательского доверенного центра сертификации или отправки клиентского сертификата серверам, которые его запрашивают, передайте объект SecurityContext как необязательный context аргумент конструктору HttpClient. Желаемые параметры безопасности можно настроить в объекте SecurityContext.
Заголовки
Все запросы HttpClient по умолчанию устанавливают следующий заголовок:
Accept-Encoding: gzip
Это позволяет HTTP-серверу использовать сжатие gzip для тела, если это возможно. Если это поведение нежелательно, установите заголовок Accept-Encoding на другое значение. Чтобы отключить сжатие gzip ответа, очистите этот заголовок:
request.headers.removeAll(HttpHeaders.ACCEPT_ENCODING)
Закрытие HttpClient
HttpClient поддерживает постоянные соединения и кэширует сетевые соединения для повторного использования при возможности для нескольких запросов. Это означает, что сетевые соединения могут оставаться открытыми некоторое время после завершения запроса. Используйте HttpClient.close, чтобы принудительно завершить работу объекта HttpClient и закрыть неиспользуемые сетевые соединения.
Включение и выключение прокси-серверов
По умолчанию HttpClient использует конфигурацию прокси, доступную из среды, см. findProxyFromEnvironment. Чтобы отключить использование прокси, установите свойство findProxy в null.
HttpClient client = new HttpClient(); client.findProxy = null;
Константы
- DEFAULT_HTTP_PORT → int
-
80 - DEFAULT_HTTPS_PORT → int
-
443
Статические методы
- findProxyFromEnvironment(
Uri url, { Map<String, String> environment }) → String -
Функция для определения прокси-сервера, используемого для HTTP-соединения, на основе конфигурации прокси, указанной в переменных среды.
Конструкторы
- HttpClient({SecurityContext context }) factory
Свойства
- authenticate → только для записи
-
Устанавливает функцию, которая вызывается, когда сайт запрашивает аутентификацию. В аргументы передаются запрашиваемый URL и область безопасности сервера
urlиrealm. - authenticateProxy → только для записи
-
Устанавливает функцию, которая вызывается, когда прокси запрашивает аутентификацию. В аргументы передаются информация о используемом прокси, и область безопасности для аутентификации
host,portиrealm. - autoUncompress → bool чтение/запись
-
Получение и установка значения, определяющего, будет ли автоматически разархивироваться тело ответа.
- badCertificateCallback → только для записи
-
Устанавливает функцию обратного вызова, которая определит, принять ли безопасное подключение к серверу с сертификатом сервера, который не может быть проверен ни одним из наших доверенных корневых сертификатов.
- findProxy → только для записи
-
Устанавливает функцию, используемую для определения прокси-сервера, который будет использоваться для открытия HTTP-соединения к указанному
url. Если эта функция не установлена, прямые соединения будут использоваться всегда. - idleTimeout → Duration чтение/запись
-
Получение и установка тайм-аута для неактивных постоянных (keep-alive) соединений. Значение по умолчанию — 15 секунд.
- maxConnectionsPerHost → int чтение/запись
-
Получение и установка максимального числа активных соединений с одним хостом.
- userAgent → String чтение/запись
-
Установка и получение значения заголовка
User-Agentпо умолчанию для всех запросов, генерируемых этим HttpClient. Значение по умолчанию —Dart/<version> (dart:io). - hashCode → int только для чтения, унаследованное
-
Хеш-код для данного объекта.
- runtimeType → Type только для чтения, унаследованное
-
Представление типа объекта во время выполнения.
Операторы
- operator ==(
other) → bool унаследованное -
Оператор равенства.
Методы
- 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-клиент. Если
forceравноfalse(по умолчанию), HttpClient будет оставаться активным до завершения всех активных соединений. Еслиforceравноtrue, все активные соединения будут закрыты для немедленного освобождения всех ресурсов. Эти закрытые соединения получат событие об ошибке, чтобы указать, что клиент был закрыт. В обоих случаях попытка установить новое соединение после вызова close вызовет исключение. - 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.
- 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.
- noSuchMethod(
Invocation invocation) → dynamic inherited -
Вызывается, когда обращаются к несуществующему методу или свойству.
- toString(
) → String inherited -
Возвращает строковое представление этого объекта.
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-io/HttpClient-class.html