我一直在試圖創建一個可以處理GET和POST方法的小型web服務器。使用nodemcu的POST參數不可用
出於某種原因,似乎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。 –
我在nodemcu-build.com的1.5.1 dev分支上得到了預期的輸出結果。也許你可以試試這個構建,看看你是否繼續有問題? '######## POST/HTTP/1.1 主機:192.168.1.100 用戶代理:捲曲/ 7.43.0 接受:*/* 的Content-Length:7 內容類型:應用/ x-www-form-urlencoded foo = bar ********' –