我的代码如下所示:
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/