Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
139 / 137 / 66
Регистрация: 15.05.2012
Сообщений: 515
1

Парсинг POST заголовка

15.06.2017, 23:37. Показов 2292. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую.
Пишу HTTP сервер с REST API. Столкнулся с проблемой парсинга строки POST запроса.

Пример header'a
Код
POST / HTTP/1.1\r\nUser-Agent: Fiddler\r\nContent-Type: application/json\r\nHost: 127.0.0.1:8980\r\nContent-Length: 13\r\n\r\n{\"bla\":\"bla\"}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Session::header(std::shared_ptr<Session> pThis)
{
    async_read_until(pThis->socket, pThis->buff, '\r',
        [pThis](const boost::system::error_code& e, std::size_t s)
    {
        std::string line, ignore;
        std::istream stream{ &pThis->buff };
        do
        {
            std::getline(stream, line, '\r');
            std::getline(stream, ignore, '\n');
            if (line.length() > 0)
                pThis->headers.read_header(line);
        } while (!stream.eof());
    });
}

pThis->headers.read_header разбирает текущую строку. Например Content-Type: application/json на Content-Type и application/json и заносит всё это дело в std::map
В этом случае парсит всё и даже разбирает json, на составляющие, скрин ниже.
Собственно вопрос, а как сразу распарсить всё строку?

Заранее благодарю.
Миниатюры
Парсинг POST заголовка  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2017, 23:37
Ответы с готовыми решениями:

Парсинг токена при post запросе
Парсинг токена при post запросе вот собственно часть кода: implementation {$R *.dfm} ...

Парсинг ajax, отправка POST запроса
Добрый день господа. Подскажите такую вещь. Вот хочу распарсить сайт на котором часть данных...

Парсинг post запроса через cURL
Стоит задача получить в поиске конкретную запись по номеру извещения. Делаю через CURL,сам сайт с...

Get и Post запрос в цикле - парсинг 1000 страниц
В интернете очень много примеров на тематику Post и Get запросов, но все примеры сводятся только к...

8
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
16.06.2017, 08:54 2
Вопрос непонятен, что сделать то нужно? Все уже и так парсится, нужно как-то по-другому распарсить?
0
139 / 137 / 66
Регистрация: 15.05.2012
Сообщений: 515
16.06.2017, 09:04  [ТС] 3
В общем хотелось бы сразу разбить строку на подстроки и после занести в std::map, как то так:
Код
User-Agent: Fiddler
Content-Type: application/json
Host: 127.0.0.1:8980
Content-Length: 13
Content:{\"bla\":\"bla\"}
В общем сложности в выдёргивании json так как он так же имеет разделитель ":"
0
nmcf
16.06.2017, 12:28
  #4

Не по теме:

Ты не внёс ясность.

0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
16.06.2017, 13:27 5
Цитата Сообщение от wendstor Посмотреть сообщение
сложности в выдёргивании json так как он так же имеет разделитель ":"
Ну так первый разделитель ":" всегда относится к заголовку HTTP, т.е. заголовок
элементарно разбивается на name и value каким-нибудь простым string.find_first_of()...
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
16.06.2017, 14:00 6
Цитата Сообщение от Убежденный Посмотреть сообщение
string.find_first_of().
лучше просто find, т.к. он принимает параметр с одним символом, что и нужно.
или я не прав?
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
16.06.2017, 14:23 7
Наверное, эти методы в данном случае эквивалентны.
Хотя find слегка предпочтительнее, т.к. короче.
0
139 / 137 / 66
Регистрация: 15.05.2012
Сообщений: 515
16.06.2017, 15:21  [ТС] 8
Всем спасибо, но задачу решил).
Первым делом парсил header до \r\n\r\n а далее брал POST, с помощью find.
p.s. Просто думал возможно есть "магическая" функция которой можно было распарсить всю строку))
0
Kastaneda
16.06.2017, 15:36     Парсинг POST заголовка
  #9

Не по теме:

Цитата Сообщение от wendstor Посмотреть сообщение
Всем спасибо, но задачу решил)
почему-то напомнило
если пациент хочет жить - медицина бессильна ©
:D

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2017, 15:36

Парсинг страницы после передачи ей POST параметров
Здравствуйте. Помогите пожалуйста получить html код страницы после отправки ей POST запроса. ...

При переносе сложного заголовка таблицы в Word теряются границы ячеек заголовка
При переносе &quot;сложного&quot; заголовка таблицы в Word на следующий лист (на первом листе таблицы все...

Расшифровка/декодирование/парсинг данных из "ответа" POST-запроса
Здравствуйте. Пишу софт под фейсбук, и чтобы отправить один POST-запрос, нужно сначала спарсить...

В заданном файле найти и напечатать строки заголовка. Строкой заголовка считать строку, до и после которой оставлена хотя бы одна пустая строка.
В заданном файле найти и напечатать строки заголовка. Строкой заголовка считать строку, до и после...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru