Тело запроса пусто при отправке запроса от "reqwest" crate rust - PullRequest
3 голосов
/ 20 апреля 2020

Я пытаюсь сделать почтовый запрос, используя reqwest ящик из ржавчины. Вот фрагмент кода машины go .toml

[dependencies]
tokio = { version = "0.2", features = ["full"] }
reqwest = { version = "0.10", features = ["json"] }

Вот фрагмент кода, из которого я делаю запрос к простому серверу.

use reqwest::{Response, StatusCode};
use serde_json::{json, Value};

#[tokio::main]
async fn main() ->  Result< (),  reqwest::Error>  {

    let map1 = json!({
        "abc":"abc",
        "efg":"efg"
    });

    let body: Value = reqwest::Client::new()
    .post("http://localhost:4000/hello")
    .json(&map1)
    .send()
    .await?
    .json()
    .await?;

    println!("Data is : {:?}", body);

    Ok(())
}

Элемент кода написано с использованием простого серверного ящика, с которого я обслуживаю этот запрос ниже:

use simple_server::{Server, StatusCode};

fn main() {
    let server = Server::new(|req, mut response| {

        println!(
            "Request received {} {} {:?}",
            req.method(),
            req.uri(),
            &req.body()
        );

        match (req.method().as_str(), req.uri().path()) {
            ("GET", "/") => Ok(response.body(format!("Get request").into_bytes())?),

            ("POST", "/hello") => Ok(response.body(format!("Post request").into_bytes())?),

            (_, _) => {
                response.status(StatusCode::NOT_FOUND);
                Ok(response.body(String::from("Not Found").into_bytes())?)
            }
        }
    });

    server.listen("127.0.0.1", "4000");
}

Вывод, который я получаю:

Request received POST /hello []

Желаемый вывод - векторный массив байтов, но я я получаю пустой векторный массив.

Решения, которые я уже пробовал:

  • Отправка запроса с помощью Postman на тот же сервер, и он работает нормально.
  • Отправка запроса на отправку с использованием того же кода reqwest на любой другой сервер, такой как hyper, actix и т. Д. c, и он работает нормально.
  • Отправка простого тела в виде тела запроса на отправку (нет JSON). Но возникает та же проблема.

Так что я думаю, что проблема должна быть с этим простым ящиком сервера. Каждое достойное предложение будет поощряться.

...