在 Rust 中,使用 reqwest 进行数据压缩非常简单。你只需要在请求头中设置 Accept-Encoding
为 gzip
或 deflate
,然后 reqwest 会自动处理压缩和解压缩。这里是一个简单的示例:
首先,确保你的 Cargo.toml
文件中包含了 reqwest 和 flate2 依赖:
[dependencies] reqwest = { version = "0.11", features = ["json"] } flate2 = "1.0"
然后,你可以编写如下代码来发送一个带有 gzip 压缩的 POST 请求:
use reqwest::{Client, Error}; use flate2::read::GzDecoder; use std::io::Read; #[tokio::main] async fn main() -> Result<(), Error> { // 创建一个新的客户端 let client = Client::new(); // 要发送的数据 let data = https://www.yisu.com/ask/b"This is the data to be compressed and sent."; // 创建一个 Gzip 解码器 let mut decoder = GzDecoder::new(data); // 读取解码后的数据 let mut decompressed_data = https://www.yisu.com/ask/Vec::new();"https://your-api-url.com") .header("Content-Encoding", "gzip") .header("Accept-Encoding", "gzip") .body(decompressed_data) .send() .await?; // 处理响应 println!("Response status: {}", response.status()); println!("Response body: {:?}", response.text().await?); Ok(()) }
这个示例中,我们首先创建了一个 reqwest 客户端,然后将要发送的数据放入一个 GzDecoder 中进行解压缩。接下来,我们将解压缩后的数据作为请求体发送,并在请求头中设置了 Content-Encoding
和 Accept-Encoding
为 gzip
。最后,我们处理响应并输出状态码和响应内容。