chttp 0.2.1

The practical HTTP client that is fun to use.


The practical HTTP client that is fun to use.

Build Status Documentation License


cHTTP provides a clean and easy-to-use interface around the venerable libcurl. Here are some of the features that are currently available:

  • HTTP/2 support.
  • Connection pooling and reuse.
  • Response body streaming.
  • Request body uploading from memory or a stream.
  • Tweakable redirect policy.
  • TCP socket configuration.
  • Uses the future standard Rust http interface for requests and responses.

Why libcurl?

Not everything needs to be re-invented! For typical use cases, libcurl is a fantastic choice for making web requests. It's fast, reliable, well supported, and isn't going away any time soon.

It has a reputation for having an unusual API that is sometimes tricky to use, but hey, that's why this library exists.


Really simple example that spits out the response body from

let mut response = chttp::get("").unwrap();
let body = response.body_mut().text().unwrap();
println!("{}", body);

Configuring a custom client:

use chttp::{http, Client, Options, RedirectPolicy};
use std::time::Duration;

let mut options = Options::default();
options.timeout = Some(Duration::from_secs(60));
options.redirect_policy = RedirectPolicy::Limit(10);
options.preferred_http_version = Some(http::Version::HTTP_2);

let client = Client::builder()

let mut response = client.get("").unwrap();
let body = response.body_mut().text().unwrap();
println!("{}", body);


Add this to your Cargo.toml file:

chttp = "0.2"


This library is licensed under the MIT license. See the LICENSE file for details.