• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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, что очень удобно.
 
Сверху Снизу