Ser*_*pov 12 proxy http rust hyper
如何使用Hyper 0.11的代理发送HTTP请求?我有以下工作代码发送没有代理的HTTP请求:
extern crate hyper;
extern crate tokio_core;
extern crate futures;
use futures::Future;
use hyper::Client;
use tokio_core::reactor::Core;
fn main() {
let mut core = Core::new().unwrap();
let client = Client::new(&core.handle());
let uri = "http://stackoverflow.com".parse().unwrap();
let work = client.get(uri).map(|res| {
res.status()
});
match core.run(work) {
Ok(status) => println!("Status: {}", status),
Err(e) => println!("Error: {:?}", e)
}
}
Run Code Online (Sandbox Code Playgroud)
这与如何通过Hyper代理到达HTTPS站点不重复?因为我问的是Hyper 0.11的新版本,它有一个完全不同的API,与以前的版本不兼容.
您可以使用该Client::configure()方法构建代理连接器,然后使用 构建它handle,请参见下面的代码片段
let handle = core.handle();
let proxy = {
let proxy_uri ="http://<your proxy>:port".parse().unwrap();
let mut proxy = Proxy::new(Intercept::All, proxy_uri);
proxy.set_authorization(Basic{
username: "your username",
password: Some("your passwd"),
});
let http_connector = HttpConnector::new(4, &handle);
ProxyConnector::from_proxy(http_connector, proxy).unwrap()
};
let client = Client::configure().connector(proxy).build(&handle)
Run Code Online (Sandbox Code Playgroud)
现在您可以使用客户端对象执行任何 REST 调用。