Как мне установить заголовки запроса, используя Reqwest?

Мне нужно сделать запрос GET на веб-сайт с файлом cookie, используя библиотеку Reqwest. Я понял, как отправить запрос GET:

let response = reqwest::get("http://example.com")?;

How do I send the same request but adding some custom headers?

1 ответ

Решение

Начиная с документации ящика, мы видим:

Для одного запроса вы можете использовать get ярлык метод.

get Документация гласит:

эта функция создает новый внутренний Client на каждый звонок

Client имеет request метод, который гласит:

что позволит установить заголовки и тело запроса перед отправкой.

Это ссылки на RequestBuilder который имеет header метод, который имеет пример:

use reqwest::header::UserAgent;

let client = reqwest::Client::new();
let res = client.get("https://www.rust-lang.org")
    .header(UserAgent::new("foo"))
    .send()?;

Отправить cookie в клиенте reqwest с версией ~0.9.19

use reqwest; // 0.9.19
use http::{HeaderMap, HeaderValue, header::{COOKIE}};

// create client first
let init_client = reqwest::Client::builder()
        .cookie_store(true).build().unwrap();
// create Header Map
// Here cookie store is optional based on if making more than one request with the // same client 
let mut headers = HeaderMap::new();
headers.insert(COOKIE, HeaderValue::from_str("key=value").unwrap());
let resp = init_client.get("api")
           .headers(headers)
           .query(&[("name", "foo")])
           .send()
           .map(|resp|{
               println!("{:?}", resp.status());
               resp
           })
           .map_err(|err|{
              println!("{:?}", err);
              err
           });

Надеюсь, это поможет.

Другие вопросы по тегам