Rust 中使用 reqwest 发送 POST 请求并处理错误
Rust 中使用 reqwest 发送 POST 请求并处理错误
以下是一个使用 Rust 的 reqwest 库发送 POST 请求的示例,以及如何处理错误和获取错误信息。
async fn main() {
if let Ok(res) = send_post().await {
println!("result is :{:?}", res);
} else {
println!("Error: {:?}", err);
}
}
async fn send_post() -> Result<serde_json::Value, reqwest::Error> {
let client = reqwest::Client::new();
//post 请求头
let mut header = HeaderMap::new();
header.insert("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/110.0.0.0 Safari/537.36".parse().expect("unsolve the userAgent header value."),
);
header.insert("referer", "https//www.covery.com".parse().expect("unsolve the referer value."));
header.insert("sec-ch-ua", "sec-ch-ua".parse().expect("ms"));
// post 请求体
let mut data = HashMap::new();
data.insert("prompt", "hello");
Ok(client.post("https://free-api.cveoy.com/v3/completions")
.headers(header)
.json(&data)
.send()
.await?
.json::<serde_json::Value>()
.await?)
}
代码解释:
-
send_post()函数:- 使用
reqwest::Client::new()创建一个新的 HTTP 客户端。 - 设置请求头,包括
User-Agent、referer和sec-ch-ua。 - 创建一个
HashMap存储请求体数据,这里只设置了一个prompt字段。 - 使用
client.post()发送 POST 请求,指定目标 URL,并使用headers()设置请求头,使用json()设置请求体。 - 使用
send()发送请求并等待响应。 - 使用
json::<serde_json::Value>()解析响应 JSON 数据。 - 返回一个
Result,包含解析后的 JSON 数据或reqwest::Error错误。
- 使用
-
main()函数:- 使用
if let Ok(res) = send_post().await语句判断send_post()函数是否成功执行。 - 如果执行成功,则打印结果
res。 - 如果执行失败,则打印错误信息
err。
- 使用
错误处理:
当 send_post() 函数出现错误时,错误信息会被包装成 reqwest::Error 类型并返回。在 main() 函数中,使用 else 语句捕获错误信息,并使用 println!("Error: {:?}", err); 打印错误信息。
总结:
本示例演示了如何在 Rust 中使用 reqwest 库发送 POST 请求,并使用 Result 类型处理错误。通过捕获 reqwest::Error 错误信息,我们可以方便地排查问题。
原文地址: https://www.cveoy.top/t/topic/lBMk 著作权归作者所有。请勿转载和采集!