I have started to implement an asynchronous HTTP client, available on crates.io under the name async-http-client.

This is a simple, quite incomplete implementation of HTTP/1.1; for instance, it does not support chunked transfer encoding (or gzip or deflate for that matter), or handles deprecated HTTP/1.0 features like header folding or a response without Content-Length terminated by closing the connection. It doesn’t do TLS, though I don’t know how difficult it would be to add that.

The distinctive features of async-http-client are:

asynchronous (using tokio-core)

available on crates.io

lightweight and simple, with few dependencies

standalone HTTP response parser written with nom

Wishlist:

support Transfer-Encoding: chunked

maybe provide a Stream interface, so the caller can treat a chunked response as it arrives rather than waiting for the complete response.

I’m using this crate at work, hope this can be useful to somebody else!