[][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

namecomment
asyncAsync request features
tls-nativesupport https request use native-tls crate
tls-rustlssupport 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();
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