HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 13.07.2023, 16:07
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию

Описание: Удобный C++ враппер, парсер и билдер для HTTP сообщений. Использует библиотеку http-parser для парсинга. Я устанавливал через vcpkg, вы можете собрать сами. Работа с net::http::response аналогична работе с net::http::request. Если в запросе не будет тела, то спарсятся только start line + заголовки. Можно использовать вместе с http_url_handler. В этой библиотеке есть 4 класса:
  1. net::http::request - отвечает за парсинг и билдинг запросов,
  2. net::http::response - отвечает за парсинг и билдинг ответов,
  3. net::http::headers_body - класс нужен только для наследования, содержит работу с заголовками и телом запроса,
  4. net::http::message_parser - отвечает только за парсинг запросов и ответов, минимально использует память,

Парсинг сообщений:

C++:





[CODE]
std
::
string request_str
{
R"(GET /path HTTP/1.1
Content-Length: 16
Content-Type: application/json
User-Agent: test-user-agent

{"key": "value"})"
}
;
// Записываем HTTP сообщение в строку
net
::
http
::
request request
{
request_str
}
;
// Парсим сообщение в качестве запроса
std
::
cout



Билдинг сообщений с нуля:

C++:





[CODE]
std
::
string body
{
R"({"key": "value"})"
}
;
// Записываем тело в строку
net
::
http
::
request request
{
}
;
// Создаём пустой объект
request
.
version
(
"1.1"
)
;
// Заполняем объект значениями
request
.
method
(
net
::
http
::
method
::
GET
)
;
request
.
target
(
"/path"
)
;
request
.
headers
(
net
::
http
::
headers_t
{
{
"Content-Length"
,
std
::
to_string
(
body
.
size
(
)
)
}
,
{
"Content-Type"
,
"applicaton/json"
}
,
{
"User-Agent"
,
"test-user-agent"
}
}
)
;
request
.
body
(
{
body
.
begin
(
)
,
body
.
end
(
)
}
)
;
std
::
cout



Репозиторий (Исходник):

GitHub - receiver1/http_message_handler

Contribute to receiver1/http_message_handler development by creating an account on GitHub.

github.com
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.