我如何在Rust期货请求中接受无效或自签名的SSL证书?



我的代码如下所示:

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

但是,这里的问题是,它给出了一个错误的url无效或自签名SSL证书。所以,我试着这样做:

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 '不是一个未来&;。

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

与返回Response的顶级get()函数不同,您在第二个代码片段中调用的Client::get()方法返回RequestBuilder,您必须使用send()才能实际通信。

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

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!(),
}
}));
}

相关内容

  • 没有找到相关文章

最新更新