Я пытался создать крошечный веб-сервер, который может обрабатывать методы GET и POST.Параметры POST недоступны с помощью nodemcu
почему-то кажется, что параметры POST не доступны для разбора, потому что всякий раз, когда я печатаю всю строку запроса, они просто не существует:
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive", function(client,request)
local buf = ""
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
end
local _GET = {}
if (vars ~= nil)then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
buf = buf , v
end
end
if method == "POST" then
buf = "POST DETECTED"
print("########")
print(request)
print("********")
end
client:send("HTTP/1.1 200 OK\n")
client:send("Server: NodeMCU 0.1\n")
client:send("Content-Length: " .. string.len(buf) .. "\n\n")
client:send(buf);
client:close();
collectgarbage();
end)
end)
Для просто завитка вызова, как тот, в следующий пример:
curl 10.0.130.12 -v -X POST -d "foo=bar"
То, что я вижу на стороне NodeMCU является:
#########
POST/HTTP/1.1
Host: 10.0.130.12
User-Agent: curl/7.45.0
Accept: */*
Content-Length: 7
Content-Type: application/x-www-form-urlencoded
*********
Почему я не вижу параметры POST?
Если вы делаете это, потому что хотите узнать о NodeMCU и/или Lua, тогда это хорошо для вас. Если нет, я предлагаю вам попробовать https://github.com/marcoskirsch/nodemcu-httpserver. –
Я получаю ожидаемый вывод, запускающий ваш код на ветке 1.5.1 dev от nodemcu-build.com. Может быть, вы можете попробовать эту сборку и посмотреть, не возникли ли у вас проблемы? '######## POST/HTTP/1.1 хоста: 192.168.1.100 User-Agent: завиток/7.43.0 Accept: */* Content-Length: 7 Content-Type: приложения/x-www-form-urlencoded foo = bar ******** ' –