Правильный способ прочитать ответы HTTP без телаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Правильный способ прочитать ответы HTTP без тела

Сообщение Anonymous »

У меня есть программа, через которую пользователь может отправлять HTTP -запросы. Как вы знаете, не каждый HTTP -запрос предполагает тело ответа. Ответы на некоторые запросы могут содержать только заголовки (например, ответ на запрос головы) Голова Метод, но я ожидаю, что истина, потому что ответ не содержит тело. (parser.content_length (). value () == 0)) &&! parser.chunked ()) вместо if (parser.is_done ()) будет работать. Это решение предполагает, что если нет содержимого длины содержания или передачи: кусочки заголовков, то ответ не содержит тело, но я не уверен, является ли это правильным решением. < /P>
Вот мой код: < /p>
#include
#include
#include
#include
#include
#include
#include

namespace beast = boost::beast;
namespace http = beast::http;
namespace net = boost::asio;
namespace ssl = net::ssl;
using tcp = net::ip::tcp;

int main() {
try {
const std::string host = "stackoverflow.com";
const std::string port = "443";
const std::string target = "/questions";
int version = 11; // HTTP/1.1

// IO + SSL
net::io_context ioc;
ssl::context ctx(boost::asio::ssl::context::tls_client);
ctx.set_options(ssl::context::default_workarounds | boost::asio::ssl::context::no_tlsv1);

beast::ssl_stream stream(ioc, ctx);

tcp::resolver resolver(ioc);
auto const results = resolver.resolve(host, port);
beast::get_lowest_layer(stream).connect(results);

if (!SSL_set_tlsext_host_name(stream.native_handle(), host.c_str())) {
throw boost::system::system_error(::ERR_get_error(), boost::asio::error::get_ssl_category());
}

// SSL Handshake
stream.handshake(ssl::stream_base::client);

// HEAD request
http::request req{ http::verb::head, target, version };
req.set(http::field::host, host);
req.set(http::field::user_agent, "Boost::Beast");

// send request
http::write(stream, req);

std::cout

Подробнее здесь: https://stackoverflow.com/questions/796 ... thout-body
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»