[−][src]Crate rttp_client
rttp
A simple to use http lib for rust.
rttp_client
Additional features
rttp_client is a minimal http client, the default features only support http request, but you can add features to support https request, and async support
name | comment |
---|---|
async | Async request features |
tls-native | support https request use native-tls crate |
tls-rustls | support https request use rustls crate |
The default use
[dependencies]
rttp_client = "*"
With tls-native
[dependencies]
rttp_client = { version = "*", features = ["tls-native"] }
With tls-rustls
[dependencies]
rttp_client = { version = "*", features = ["tls-rustls"] }
Async support
[dependencies]
rttp_client = { version = "*", features = ["async"] }
Full support
[dependencies]
rttp_client = { version = "*", features = ["async", "tls-native"] }
Important
tls-native
and tls-rustls
only support choose on features, do not same to use.
Examples
GET
HttpClient::new().get() .url("http://httpbin.org/get") .emit();
POST
HttpClient::new().post() .url("http://httpbin.org/post") .emit();
Header
let mut multi_headers = HashMap::new(); multi_headers.insert("name", "value"); HttpClient::new().get() .url("http://httpbin.org/get") .header("name=value&name=value") .header(("name", "value", "name=value&name=value")) .header(Header::new("name", "value")) .header(multi_headers) .emit();
Para
let mut multi_para = HashMap::new(); multi_para.insert("name", "value"); HttpClient::new().post() .url("http://httpbin.org/post") .para("name=value&name=value") .para(("name", "value", "name=value&name=value")) .para(Para::new("name", "value")) .para(multi_para) .emit();
Url
HttpClient::new().get() .url(RoUrl::with("http://httpbin.org").path("get").para("name=value").para(("from", "rttp"))) .emit();
POST JSON
HttpClient::new().post() .url("http://httpbin.org/post") .content_type("application/json") .raw(r#" {"id": 1, "from": "rttp"} "#) .emit();
Form && Upload file
let mut multi_form = HashMap::new(); multi_form.insert("name", "value"); HttpClient::new().post() .url("http://httpbin.org/post") .para("name=value") .form("name=value") .form("name=value&name=value") .form(("name", "value", "name=value&name=value")) .form("file=@filename#/path/to/file") .form("file=@/path/to/file") .form(multi_form) .form(FormData::with_text("name", "value")) .form(FormData::with_file("name", "/path/to/file")) .form(FormData::with_file_and_name("name", "/path/to/file", "filename")) .form(FormData::with_binary("name", vec![])) // Vec<u8> .emit();
Para and form can be mixed, para does not support file parsing
Proxy
BASIC
HttpClient::new().post() .url("http://httpbin.org/post") .content_type("application/json") .raw(r#" {"id": 1, "from": "rttp"} "#) .proxy(Proxy::http("127.0.0.1", 1081)) .emit();
BASIC WITH AUTHORIZATION
HttpClient::new().post() .url("http://httpbin.org/post") .content_type("application/json") .raw(r#" {"id": 1, "from": "rttp"} "#) .proxy(Proxy::socks5_with_authorization("127.0.0.1", 1081, "username", "password")) .emit();
Auto redirect
let response = HttpClient::new().post() .config(Config::builder().auto_redirect(true)) .get() .url("http://bing.com") .emit(); assert!(response.is_ok()); let response = response.unwrap(); assert_ne!("bing.com", response.host());
Async
let response = HttpClient::new().post() .url("http://httpbin.org/post") .rasync() .await;
Modules
error | |
response | |
types |
Structs
Config | |
ConfigBuilder | |
HttpClient |