Подскажите пожалуйста, как делать post запрос используя hyper. Материала много в интернете, но такое впечатление что он только для старых версий hyper. У меня вышло что-то такое, и не работает. Прошу помощи Ссылка на playground
Должно вернуть тело странички, в которой будет ужатый css
Я еще в futures путаюсь(
Раньше пользовался crate reqwest и сложностей не знал
extern crate hyper;
use hyper::{Method, Request};
use hyper::client;
use hyper::Client;
use hyper::rt::{Future, Stream};
fn main() {
let css = "body{
margin: 0;
}";
let css_min = css_minifier(css);
println!("css min: {}", css_min);
}
fn css_minifier(css: &str) -> String {
let uri: hyper::Uri = "https://cssminifier.com/raw".parse().unwrap();
// Post Params
let params = [("input", css)];
let body_string = serde_urlencoded::to_string(¶ms).unwrap();
let body = hyper::Body::from(body_string);
let mut req = Request::new(body);
*req.method_mut() = Method::POST;
*req.uri_mut() = uri.clone();
req.headers_mut().insert(
hyper::header::CONTENT_TYPE,
hyper::header::HeaderValue::from_static("application/x-www-form-urlencoded"),
);
let client = Client::new();
let post = client.request(req).and_then(|res| {
println!("POST: {}", res.status());
Ok(res.into_body().concat2())
});
let res = post.wait().unwrap();
println!("POST: {:?}", res);
"test".to_string()
}
Раньше работало вот так: Ссылка на Playground Но сейчас что-то и так не хочет. Видимо hyper обновился.
P. S. я все таки хочу решение через hyper а не reqwest
Большое спасибо
Надо просто взять старую версию hyper, а не последнюю. Там только синхронный режим. Но это было, наверное, год назад
Либо другой http-клиент - например reqwest. Там это делается в одну строку:
let client = reqwest::Client::new();
let res = client.post("http://httpbin.org/post")
.body("the exact body that is sent")
.send()?;