使用 Rust 的 reqwest crates 和 tokio(异步)与 QBittorrent Web API 进行交互。
我根据 QBittorrent Web API 的文档创建了一个 HTTP 请求,该请求在 Postman 和 Python 中有效,但由于某种原因在 Rust 中无效。
以下代码是从 Postman“代码片段”粘贴的。
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::builder()
.build()?;
let form = reqwest::multipart::Form::new()
.text("urls", "magnet:?xt=urn:btih:...")
.text("save_path", "C:\\Users\\user\\Downloads");
let request = client.request(reqwest::Method::POST, "http://localhost:2048/api/v2/torrents/add")
.multipart(form);
let response = request.send().await?;
let body = response.text().await?;
println!("{}", body);
Ok(())
}
在 reqwest crate multipart 和 Form 的 docs.rs 上确实存在。 https://docs.rs/reqwest/latest/reqwest/multipart/struct.Form.html
收到 此 错误:无法解决:无法multipart
在 中找到reqwest
无法multipart
在 中找到reqwest
。(6号线)
顺便说一句:也尝试使用阻塞版本,我得到了同样的错误。
这些是相关的依赖项:
[dependencies]
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
reqwest = "0.11.18"
async-trait = "0.1.72"
发生这种情况是因为
multipart
未启用功能标志default
。我建议您也查看一下Rust 文档。因此你需要
reqwest
像这样改变你的依赖