HTTP client for embedded devices

CI crates.io docs.rs Matrix

The reqwless crate implements an HTTP client that can be used in no_std environment, with any transport that implements the traits from the embedded-io crate. No alloc or std lib required!

It offers two sets of APIs:

example

rust,ignore let url = format!("http://localhost", addr.port()); let mut client = HttpClient::new(TokioTcp, StaticDns); // Types implementing embedded-nal-async let mut rx_buf = [0; 4096]; let response = client .request(Method::POST, &url) .await .unwrap() .body(b"PING") .content_type(ContentType::TextPlain) .send(&mut rx_buf) .await .unwrap();

The client is still lacking many features, but can perform basic HTTP GET/PUT/POST/DELETE requests with payloads. However, not all content types and status codes are implemented, and are added on a need basis. For TLS, you can use embedded-tls as the transport.

If you are missing a feature or would like an improvement, please raise an issue or a PR.

Minimum supported Rust version (MSRV)

reqwless requires a feature from nightly to compile embedded-io with async support:

This feature is complete, but is not yet merged to stable.