Simple blocking http client with reqwest sending a GET request
Create a new crate
cargo new demo
cd demo
Add the reqwest crate as a dependency with the blocking feature:
cargo add reqwest --features blocking
Cargo.toml
Or manually edit the Cargo.toml file to add it as a dependency.
[package]
name = "simple-http-client"
version = "0.1.0"
edition = "2024"
[dependencies]
reqwest = { version = "0.12.23", features = ["blocking"] }
Code
fn main() { let url = get_url("get"); let res = match reqwest::blocking::get(url) { Ok(res) => res, Err(err) => { println!("Error {}", err); std::process::exit(1); } }; println!("{:?}", res.status()); println!("{:?}", res); } fn get_url(path: &str) -> String { let host = std::env::args().nth(1).unwrap_or("httpbin.org".into()); let url = if host == "localhost" { format!("http://localhost/{path}") } else { format!("https://{host}/{path}") }; url }
Run the code
cargo run
If everything works fine then you'll get back something like this:
200
Response {
url: "https://httpbin.org/get",
status: 200,
headers: {
"date": "Wed, 24 Sep 2025 18:09:11 GMT",
"content-type": "application/json",
"content-length": "219",
"connection": "keep-alive",
"server": "gunicorn/19.9.0",
"access-control-allow-origin": "*",
"access-control-allow-credentials": "true"
}
}
If the service does not work we'll see an error message:
Error error sending request for url (https://httpbin.org/get)
or you might get this output:
503
Response {
url: "https://httpbin.org/get",
status: 503,
headers: {
"server": "awselb/2.0",
"date": "Wed, 24 Sep 2025 18:30:49 GMT",
"content-type": "text/html",
"content-length": "162",
"connection": "keep-alive"
}
}
Run httpbin locally
In that case we can also run the httpbin service locally using Docker.
Start as:
docker run --rm -p 80:80 --name httpbin kennethreitz/httpbin
Then run the code:
cargo run localhost
To stop the Docker container open another terminal and execute
docker container stop -t0 httpbin
- reqwest
- blocking
- get
- status