1

我的代码如下所示:

let fetches = futures::stream::iter(
    hosts.into_iter().map(|url| {
        async move {
                match reqwest::get(&url).await {
                    // Ok and Err statements here!
                }

但是,这里的问题是它会为带有无效或自签名 SSL 证书的 URL 提供错误。因此,我尝试执行以下操作:

let fetches = futures::stream::iter(
    hosts.into_iter().map(|url| {
        async move {
            match reqwest::Client::builder().danger_accept_invalid_certs(true).build().unwrap().get(&url).await {
                // Ok and Err statements here!
            }

当我尝试使用 Cargo 构建它时,它显示“ error[E0277]: `RequestBuilder` is not a future ”。

那么,如何让我的代码接受无效证书?

4

1 回答 1

1

与返回 a 的顶级get()函数不同,您在第二个代码中调用Response的方法返回 a ,您必须进行实际通信。Client::get()RequestBuildersend()

添加缺失send()允许代码编译(playgropund):

fn main() {
    let hosts: Vec<String> = vec![];
    let fetches = futures::stream::iter(hosts.into_iter().map(|url| async move {
        match reqwest::Client::builder()
            .danger_accept_invalid_certs(true)
            .build()
            .unwrap()
            .get(&url)
            .send()
            .await
        {
            Ok(x) => x,
            Err(x) => panic!(),
        }
    }));
}
于 2021-01-31T10:08:07.503 回答