Как мне установить заголовки запроса, используя 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
});
Надеюсь, это поможет.