对就是这个:reqwest

Cargo.toml

  1. [package]
  2. name = "xmbcli"
  3. version = "0.1.0"
  4. authors = ["root"]
  5. edition = "2018"
  6. default-run = "xmbcli"
  7. # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
  8. [dependencies]
  9. structopt = "0.3.20"
  10. reqwest = { version = "0.10", features = ["json"] }
  11. tokio = { version = "0.2", features = ["full"] }
  12. serde = "1.0"
  13. serde_json = "1.0"
  14. serde_derive = "1.0"

reqwest get

  1. use reqwest;
  2. fn main() -> Result<(), Box<dyn std::error::Error>> {
  3. let url = "http://10.0.36.112/";
  4. let resp = reqwest::get(url)
  5. .await?
  6. .text()
  7. .await?;
  8. println!("{:#?}", resp);
  9. Ok(())
  10. }

reqwest post

  1. use reqwest;
  2. use std::collections::HashMap;
  3. fn main() -> Result<(), Box<dyn std::error::Error>> {
  4. let mut map = HashMap::new();
  5. map.insert("username", "root");
  6. map.insert("password", "root");
  7. let client = reqwest::Client::new();
  8. // response body
  9. let resp = client.post("http://10.0.36.112/login")
  10. .json(&map)
  11. .send()
  12. .await?
  13. .text()
  14. .await?;
  15. println!("{:#?}", resp);
  16. // response header & status
  17. let resp = client.post("http://10.0.36.112/login")
  18. .json(&map)
  19. .send()
  20. .await?;
  21. println!("{:#?}", resp.headers());
  22. println!("{:#?}", resp.status());
  23. Ok(())
  24. }

reqwest response text to struct

  1. use reqwest;
  2. use std::collections::HashMap;
  3. use serde_derive::{Deserialize};
  4. #[derive(Deserialize)]
  5. struct Resp {
  6. status: String,
  7. msg: String,
  8. }
  9. fn main() -> Result<(), Box<dyn std::error::Error>> {
  10. let mut map = HashMap::new();
  11. map.insert("username", "root");
  12. map.insert("password", "root");
  13. let client = reqwest::Client::new();
  14. let res = client.post("http://10.0.36.112/login")
  15. .json(&map)
  16. .send()
  17. .await?
  18. .json::<Resp>()
  19. .await?;
  20. println!("------msg:{} ---status: {}", res.msg, res.status);
  21. Ok(())
  22. }

reqwest set headers

  1. use reqwest;
  2. use reqwest::header::HeaderMap;
  3. use reqwest::header::HeaderValue;
  4. fn main() -> Result<(), Box<dyn std::error::Error>> {
  5. let mut header_map = HeaderMap::new();
  6. let jwe_key = "jwe value";
  7. header_map.insert("jwe", HeaderValue::from_static(jwe_key));
  8. let res = client.get("http://10.0.36.112/role/admin")
  9. .headers(header_map)
  10. .send()
  11. .await?
  12. .text()
  13. .await?;
  14. println!("{:#?}", res);
  15. Ok(())
  16. }