Dart DocumentationclientClient

Client abstract class

The interface for HTTP clients that take care of maintaining persistent connections across multiple requests to the same server. If you only need to send a single request, it's usually easier to use head, get, post, put, or delete instead.

When creating an HTTP client class with additional functionality, you must extend BaseClient rather than Client. In most cases, you can wrap another instance of Client and add functionality on top of that. This allows all classes implementing Client to be mutually composable.

abstract class Client {
 /// Creates a new Client using the default implementation. This implementation
 /// uses an underlying `dart:io` [HttpClient] to make requests.
 factory Client() => new IOClient();

 /// Sends an HTTP HEAD request with the given headers to the given URL, which
 /// can be a [Uri] or a [String].
 ///
 /// For more fine-grained control over the request, use [send] instead.
 Future<Response> head(url, {Map<String, String> headers});

 /// Sends an HTTP GET request with the given headers to the given URL, which
 /// can be a [Uri] or a [String].
 ///
 /// For more fine-grained control over the request, use [send] instead.
 Future<Response> get(url, {Map<String, String> headers});

 /// Sends an HTTP POST request with the given headers and fields to the given
 /// URL, which can be a [Uri] or a [String]. If any fields are specified, the
 /// content-type is automatically set to
 /// `"application/x-www-form-urlencoded"`.
 ///
 /// For more fine-grained control over the request, use [send] instead.
 Future<Response> post(url,
     {Map<String, String> headers,
      Map<String, String> fields});

 /// Sends an HTTP PUT request with the given headers and fields to the given
 /// URL, which can be a [Uri] or a [String]. If any fields are specified, the
 /// content-type is automatically set to
 /// `"application/x-www-form-urlencoded"`.
 ///
 /// For more fine-grained control over the request, use [send] instead.
 Future<Response> put(url,
     {Map<String, String> headers,
      Map<String, String> fields});

 /// Sends an HTTP DELETE request with the given headers to the given URL,
 /// which can be a [Uri] or a [String].
 ///
 /// For more fine-grained control over the request, use [send] instead.
 Future<Response> delete(url, {Map<String, String> headers});

 /// Sends an HTTP GET request with the given headers to the given URL, which
 /// can be a [Uri] or a [String], and returns a Future that completes to the
 /// body of the response as a String.
 ///
 /// The Future will emit an [HttpException] if the response doesn't have a
 /// success status code.
 ///
 /// For more fine-grained control over the request and response, use [send] or
 /// [get] instead.
 Future<String> read(url, {Map<String, String> headers});

 /// Sends an HTTP GET request with the given headers to the given URL, which
 /// can be a [Uri] or a [String], and returns a Future that completes to the
 /// body of the response as a list of bytes.
 ///
 /// The Future will emit an [HttpException] if the response doesn't have a
 /// success status code.
 ///
 /// For more fine-grained control over the request and response, use [send] or
 /// [get] instead.
 Future<Uint8List> readBytes(url, {Map<String, String> headers});

 /// Sends an HTTP request and asynchronously returns the response.
 Future<StreamedResponse> send(BaseRequest request);

 /// Closes the client and cleans up any resources associated with it. It's
 /// important to close each client when it's done being used; failing to do so
 /// can cause the Dart process to hang.
 void close();
}

Subclasses

BaseClient

Constructors

factory Client() #

Creates a new Client using the default implementation. This implementation uses an underlying dart:io HttpClient to make requests.

factory Client() => new IOClient();

Methods

abstract void close() #

Closes the client and cleans up any resources associated with it. It's important to close each client when it's done being used; failing to do so can cause the Dart process to hang.

abstract Future<Response> delete(url, {Map<String, String> headers}) #

Sends an HTTP DELETE request with the given headers to the given URL, which can be a Uri or a String.

For more fine-grained control over the request, use send instead.

abstract Future<Response> get(url, {Map<String, String> headers}) #

Sends an HTTP GET request with the given headers to the given URL, which can be a Uri or a String.

For more fine-grained control over the request, use send instead.

Sends an HTTP HEAD request with the given headers to the given URL, which can be a Uri or a String.

For more fine-grained control over the request, use send instead.

abstract Future<Response> post(url, {Map<String, String> headers, Map<String, String> fields}) #

Sends an HTTP POST request with the given headers and fields to the given URL, which can be a Uri or a String. If any fields are specified, the content-type is automatically set to "application/x-www-form-urlencoded".

For more fine-grained control over the request, use send instead.

abstract Future<Response> put(url, {Map<String, String> headers, Map<String, String> fields}) #

Sends an HTTP PUT request with the given headers and fields to the given URL, which can be a Uri or a String. If any fields are specified, the content-type is automatically set to "application/x-www-form-urlencoded".

For more fine-grained control over the request, use send instead.

abstract Future<String> read(url, {Map<String, String> headers}) #

Sends an HTTP GET request with the given headers to the given URL, which can be a Uri or a String, and returns a Future that completes to the body of the response as a String.

The Future will emit an HttpException if the response doesn't have a success status code.

For more fine-grained control over the request and response, use send or get instead.

abstract Future<Uint8List> readBytes(url, {Map<String, String> headers}) #

Sends an HTTP GET request with the given headers to the given URL, which can be a Uri or a String, and returns a Future that completes to the body of the response as a list of bytes.

The Future will emit an HttpException if the response doesn't have a success status code.

For more fine-grained control over the request and response, use send or get instead.

abstract Future<StreamedResponse> send(BaseRequest request) #

Sends an HTTP request and asynchronously returns the response.