Как получить необработанный HttpResponse с помощью Hyper или Reqwest? - PullRequest
1 голос
/ 14 июля 2020

Есть ли способ получить фактический / исходный / необработанный HTTP-ответ после выполнения reqwest::get("https://httpbin.org/ip").send().await?

или из гипер: client.get("https://httpbin.org/ip".parse()?).await?

Мне нужен результат, аналогичный тому, что почтальон возвращает:

Date: Mon, 13 Jul 2020 07:43:46 GMT
Content-Type: application/json
Content-Length: 33
Connection: keep-alive
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
{
  "origin": "102.200.212.40"
}

Каким-то образом reqwest слишком хорошо организует ответ; в version(), status(), headers() et c.

Причина, по которой я специально упомянул reqwest и / или hyper, заключается в том, что они широко используются во всем коде. Я надеюсь, что смогу их использовать, прежде чем мы попробуем другой crate / lib.

1 Ответ

0 голосов
/ 27 августа 2020

@B.CarlaYap на самом деле ваш вопрос непонятен .. можете ли вы обновить и добавить точное отображение звонка почтальона, который вы делаете. также вы смотрите на ЗАГОЛОВОК, который вы можете получить из Response.

вы можете использовать Blocking, который проще для понимания.

reqwest = {version = "0.10.8", features = ["blocking", "json"]}


fn main() -> Result<(), Box<dyn std::error::Error>> {

    println!("GET https://www.rust-lang.org");

    let mut res = reqwest::blocking::get("https://www.rust-lang.org/")?;

    println!("Status: {}", res.status());
    println!("Headers:\n{:?}", res.headers());

    // copy the response body directly to stdout
    res.copy_to(&mut std::io::stdout())?;

    println!("\n\nDone.");
    Ok(())
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...