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

Нужна помощь LUA HTTPS - пробелы и переносы строки в ссылке

Pin-G

Member
Отсылаю запрос такой командой:
http.get("https://сайт?msg=текст с пробелами", nil, function(code, data) print(code, data) end)
При этом модуль возвращает это:
stdin:1: unexpected symbol near ')'
Или это:
stdin:1: '<eof>' expected near 'end'

При попытке отправить текст с выше 7 символов подобным образом:
%54%20%45%20%53%20%54
Возарвщвет разные бредовые ошибки...
Обычные символы тоже не отправляет если их свыше 21.
Ошибки тоже бредовые...
Если просто заменить пробелы на %20, тоже возвращает бредовые ошибки...

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

Как действовать?
Хелп!
 
Последнее редактирование:

Pin-G

Member
Проблема в том что длинна команды больше чем модуль может принять.
Увеличил команду за счет проверки...
http.get("https://", nil, function(code, data) if (code < 0) then print("HTTP request failed") else print(code, data) end end)
И тут уже даже с одним символом не отправилось...
Как быть?
 

Pin-G

Member
Зато если заранее по UART передать переменную:
g="https://"
а потом уже эту переменную отправить:
http.get(g, nil, function(code, data) print(code, data) end)
Все работает.
 

Pin-G

Member
@dimka_f, скажи мне как POST/GET запросами подрубить HTTP'S и я не него перейду.
А еще лучше русский мануальчик по POST/GET запросам как дополнение.
 

Pin-G

Member
ну по исходникам если смотреть то нет. до обращения к функции GET -- http_get(url, headers, http_callback); идет проверка Вашей строки на предмет аргументов см. тут -static int http_lapi_get( lua_State *L ).
Проблема не в этом.
Проблема в том что пакет для UART переполняется, потому и не получается отправить больше.
Тут-то AT команды и проигрывают.
В них нельзя будет передать слишком большую ссылку из-за ограничений UART.
А вот в LUA можно оправить ссылку кусками а потом отправить запрос.
Хотя да, есть еще же вариант отправлять в LUA через net.socket:send(), но опять же, надо знать как подрубить HTTP'S.
 

Pin-G

Member
@dimka_f, Мне не нужен сервер, мне нужен клиент, сунь сюда скрипт или вырезку из скрипта, как POST/GET запросами работать с сайтами поддерживающими только HTTPS соединение, с возможностью спокойно вбить полноценную ссылку.
 

Pin-G

Member
@dimka_f, мне честно говоря без разницы.
Я в Веб ни о чем.
Просто нужно переодически делать POST/GET запросы по заданной ссылке через HTTP'S.
Сей:
Код:
g="https://"
http.get(g, nil, function(code, data) print(code, data) end)
способ меня устраивает, потому что работает, еще и достаточно быстро.
А на счет памяти, говорите так, будто ее очистить нельзя.
Если вы так думаете, уж извините, плохой вы программист.
 

Pin-G

Member
@dimka_f, на столько конкретно что ни одного примера как сделать правильно.
Смысл от теории без практики?
Такой же как и от женщины без дырки.
Мозг выносится, а выгоды никакой.
 

Pin-G

Member
@dimka_f, не писал я для веб ничего, только работал с ним.
Просто объясни на AT командах как отравить GET запрос на HTTPS сервер.
Потому как я примера не нашел.
Думаю не только мне это полезно будет.
Хотя я скорее всего останусь на NodeMCU, и может в нем буду использовать ваш пример.
Остаюсь на нем, потому что можно вывод из любой команды подредактировать скриптом lua, что очень удобно.
 
Сверху Снизу