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?)
}

代码解释:

  1. send_post() 函数:

    • 使用 reqwest::Client::new() 创建一个新的 HTTP 客户端。
    • 设置请求头,包括 User-Agentreferersec-ch-ua
    • 创建一个 HashMap 存储请求体数据,这里只设置了一个 prompt 字段。
    • 使用 client.post() 发送 POST 请求,指定目标 URL,并使用 headers() 设置请求头,使用 json() 设置请求体。
    • 使用 send() 发送请求并等待响应。
    • 使用 json::<serde_json::Value>() 解析响应 JSON 数据。
    • 返回一个 Result,包含解析后的 JSON 数据或 reqwest::Error 错误。
  2. 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 错误信息,我们可以方便地排查问题。

Rust 中使用 reqwest 发送 POST 请求并处理错误

原文地址: https://www.cveoy.top/t/topic/lBMk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录