• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос esp8266 webserver принять json из post запроса

AlexandreVN

Member
Здравствуйте,
как корректно принять достаточно большой (до 1кб) json переменной длины от клиента? Думаю записать в строчную переменную потом вызвать парсер. Но не уверен что так будет верно:
[inline] String po_var = server.arg("plain"); [/inline]
 

Алексей.

Active member
server.arg возвращает ссылку на константную строку, выполняя String po_var = server.arg("plain"); вы создаете дубликат этой строки, зачем не ясно.
Собираетесь отставить эту строку прозапас, в то время как сервер будет обрабатывать другие запросы?
Или парсер не может работать с ссылками на константные строки?
 

Сергей_Ф

Moderator
Команда форума
@Алексей. Думаю, что @AlexandreVN не уверен, что МК успеет распарсить ответ, до получения следующего.
@AlexandreVN В любом случае, лучше смотреть в сторону потокового парсера json. Так не будет пожирания памяти и будут актуальные данные. Даже где-то пример проскакивал для esp. Поищите.
 

Алексей.

Active member
В любом случае, лучше смотреть в сторону потокового парсера json.
Если самостоятельно получать поток для передачи его парсеру, то придется самостоятельно выполнять разбор http запросов. Определять какой метод выполняется и для какого url, разбирать заголовки и т.п.
Например веб-сервер используется для настройки esp, браузер выполняет множество запросов, запрашивает кроме основного url ещё favicon, а на основной странице ещё и ссылки на скрипты, стили, для которых браузер тоже будет выполнять запросы, и только для одного запроса (для сохранения конфигурационных параметров) нужно выполнять разбор json.
Библиотека веб-сервера существенно облегчает задачу по обработке запросов.
 
Сверху Снизу