如何在鲁斯特使用HTTP代理异步超0.11?

问题描述 投票:11回答:1

如何发送使用代理使用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)
    }
}

这不是How to reach an HTTPS site via proxy with Hyper?的副本,因为我问的是新版本的Hyper 0.11的具有完全不同的API,这是不兼容以前的版本。

http proxy rust hyper
1个回答
0
投票

您可以使用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)

现在,您可以使用客户端对象执行任何REST调用。

© www.soinside.com 2019 - 2024. All rights reserved.