[][src]Module hyper::client

HTTP Client

There are two levels of APIs provided for construct HTTP clients:

  • The higher-level Client type.
  • The lower-level conn module.

Client

The Client is the main way to send HTTP requests to a server. The default Client provides these things on top of the lower-level API:

  • A default connector, able to resolve hostnames and connect to destinations over plain-text TCP.
  • A pool of existing connections, allowing better performance when making multiple requests to the same hostname.
  • Automatic setting of the Host header, based on the request Uri.
  • Automatic request retries when a pooled connection is closed by the server before any bytes have been written.

Many of these features can configured, by making use of Client::builder.

Example

For a small example program simply fetching a URL, take a look at the full client example.

use hyper::{Client, Uri};

let client = Client::new();

// Make a GET /ip to 'http://httpbin.org'
let res = client.get(Uri::from_static("http://httpbin.org/ip")).await?;

// And then, if the request gets a response...
println!("status: {}", res.status());

// Concatenate the body stream into a single buffer...
let mut body = res.into_body();
let mut bytes = Vec::new();
while let Some(next) = body.next().await {
    let chunk = next?;
    bytes.extend(chunk);
}

// And then, if reading the full body succeeds...
// The body is just bytes, but let's print a string...
let s = std::str::from_utf8(&bytes)
    .expect("httpbin sends utf-8 JSON");

println!("body: {}", s);

Modules

conn

Lower-level client connection API.

connect

The Connect trait, and supporting types.

service

Utilities used to interact with the Tower ecosystem.

Structs

Builder

A builder to configure a new Client.

Client

A Client to make outgoing HTTP requests.

HttpConnector

A connector for the http scheme.

ResponseFuture

A Future that will resolve to an HTTP Response.