代码之家  ›  专栏  ›  技术社区  ›  Lord Vordemolt

Rust-reqwest::multipart::Form不工作

  •  -2
  • Lord Vordemolt  · 技术社区  · 2 年前

    使用Rust的reqwest板条箱与tokio(异步)与QBitcurrent web API交互。

    我根据QBitcurrent web API的文档创建了一个HTTP请求, 该请求可以在Postman和Python中使用,但由于某些原因不能在rust中使用。

    以下代码是从邮差“代码段”粘贴而来的。

    #[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的docs.rs上,crate multipart和Form确实存在。 https://docs.rs/reqwest/latest/reqwest/multipart/struct.Form.html

    正在获取 错误 : 未能解析:找不到 multipart 在里面 reqwest 找不到 多部分 在里面 reqwest .(第6行)

    BTW:我也试过使用阻塞版本,我也遇到了同样的错误。

    这些是相关的依赖关系:

    [dependencies]
    serde_json = "1.0"
    serde = { version = "1.0", features = ["derive"] }
    reqwest = "0.11.18"
    async-trait = "0.1.72"
    
    1 回复  |  直到 2 年前
        1
  •  0
  •   frankenapps    2 年前

    这是因为 multipart 功能标志未由启用 default 。我建议你也去看看 rust docs 关于这个。

    因此,您需要更改对 reqwest 像这样

    reqwest = { version = "0.11.18", features = ["multipart"] }
    
    推荐文章