Crates.io | ergoreq |
lib.rs | ergoreq |
version | 0.2.0 |
source | src |
created_at | 2023-10-28 16:04:27.727655 |
updated_at | 2024-06-14 11:24:35.389096 |
description | A human-centric web request client developed based on Reqwest, supporting automatic cookie management, automatic retries, and custom middleware. |
homepage | |
repository | https://github.com/whl2606555/ergoreq |
max_upload_size | |
id | 1017044 |
size | 111,337 |
A human-centric web request client developed based on Reqwest.
reqwest
tracing
support #[tokio::main]
async fn main(){
// Create a reqwest client first
let client = reqwest::Client::builder()
.timeout(Duration::from_secs(30))
.user_agent("ergoreq/1.0")
.redirect(Policy::none()) // remember to disable the redirect!
.build()
.unwrap();
// Then create the ergo client
let client = ErgoClient::new(client).with_auto_redirect_count(5); // global auto redirect count
// Creates cookie store. You can impl a `CookieContainer` by your own.
let cookie_store = Arc::new(ErgoCookieContainer::new(false, false, false));
// Each request will automatically set and store cookie.
client
.get("https://httpbin.org/cookies/set/test_cookie/test_success")
.with_cookie_store_ref(&cookie_store)
.send()
.await
.unwrap();
client
.get("https://httpbin.org/cookies/set/test_cookie_1/test_success_1")
.with_cookie_store_ref(&cookie_store)
.send()
.await
.unwrap();
println!("Cookies: {:#?}", cookie_store.serialize_cookies());
let response = client
.get("https://httpbin.org/redirect/4") // last time it will redirect to /get, so 4 represents 5 redirect times
.send()
.await
.unwrap();
println!(
"Redirect {}",
if response.status().is_success() {
"success"
} else {
"fail"
}
)
}
More examples can be found in examples directory.
The tested reqwest
version is 0.12. Using reqwest
older than 0.12 may cause compile error.
MIT