Как настроить HTTP-заголовок в HTTP-запросе boost-beast?

Я пытаюсь отправить сообщение с заголовком, используя библиотеку boost http. Я искал способ отправить сообщение с заголовком, но не нашел.

то, что я хочу сделать, это следовать

auto const results = resolver.resolve(host, port);
beast::get_lowest_layer(stream).connect(results);
stream.handshake(ssl::stream_base::client);

http::request<http::string_body> req(verb, query + data, 11);
req.set(http::field::host, host);
// set http header ("key" = "I am a header")
// I want to add above code.
req.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);

http::write(stream, req);
beast::flat_buffer buffer;
http::response<http::dynamic_body> res;
http::read(stream, buffer, res);

Пожалуйста, дайте мне знать, как правильно добавить заголовок в HTTP-запрос boost-beast. Спасибо!


person wwwwe    schedule 11.07.2020    source источник
comment
Вы уже устанавливаете 2 заголовка, например. req.set(http::field::host, host);   -  person Alan Birtles    schedule 11.07.2020


Ответы (1)


Просто

req.set("key", "I am a header");

Он почти такой же, как и другой - стандартный HTTP-заголовок, но с другим именем.

См. Live On Coliru

#include <boost/beast/http.hpp>
#include <iostream>
namespace http = boost::beast::http;

int main() {
    auto verb = http::verb::get;
    std::string query = "/path";
    std::string data = "?whatever=more";
    std::string host = "example.com";

    http::request<http::string_body> req(verb, query + data, 11);
    req.set(http::field::host, host);
    req.set("key", "I am a header");
    req.prepare_payload();

    std::cout << req;
}

Печать

GET /path?whatever=more HTTP/1.1
Host: example.com
key: I am a header
person sehe    schedule 11.07.2020