У меня есть программа, через которую пользователь может отправлять 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
Правильный способ прочитать ответы HTTP без тела ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1749043374
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79652801/correct-way-to-read-http-responses-without-body[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия