rust - 如何在Rust future 要求中接受无效或自签名的SSL证书?

标签 rust rust-cargo rust-tokio reqwest

我的代码如下所示:

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构建它时,它显示“错误[E0277]:`RequestBuilder`不再是 future ”。
那么,如何使我的代码接受无效的证书?

最佳答案

与返回get()的顶级 Response 函数不同,您在第二个代码中调用的 Client::get() 方法返回一个 RequestBuilder ,您必须 send() 才能进行实际通信。
添加缺少的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!(),
        }
    }));
}

关于rust - 如何在Rust future 要求中接受无效或自签名的SSL证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65977261/

相关文章:

rust - 我应该在旧的 Ubuntu 版本上编译以获得最大的 `glibc` 可移植性吗?

Rust 发现,配置文件未按预期工作

rust - 使用网络浏览器下载 Rust crates

rust - 如何在 doctest 中使用自定义模块?

rust - 在旋转循环中调用 `try_recv()` 可以吗?

rust - 最小 future 回调示例中出现 "Expected lifetime parameter"错误?

for-loop - 如何从 Rust 中的 for 循环中迭代和提取值

rust - 试图耗尽一个字符串并映射到它的字符上,但由于类型推断而失败

ssl - 构建带 cargo 的箱子时 SSL 证书无效

rust - Rust如何实现await关键字?