2015-10-31 141 views
2

我對LUA很新,我正嘗試從我的ESP8266使用LUA發送一個json帖子到本地主機上的PHP服務器,我搜索了互聯網,並且找不到任何示例來執行此操作請幫助我嗎?Lua發送json請求主體

我LUA代碼

-- tested on NodeMCU 0.9.5 build 20141222...20150108 
-- sends connection time and heap size to http:server.php 
wifi.setmode(wifi.STATION) 
wifi.sta.config("VIVA-4G-LTE-6134","VIVA176429") 
--wifi.sta.config("AndroidAP","rapz4736") 

print('httpget.lua started') 
Tstart = tmr.now() 

conn = nil 
conn = net.createConnection(net.TCP, 0) 

-- show the retrieved web page 

conn:on("receive", function(conn, payload) 
         success = true 
         print(payload) 
         end) 

-- once connected, request page (send parameters to a php script) 

conn:on("connection", function(conn, payload) 
         print('\nConnected') 
         conn:send("POST /server.php?" 
         .."name=mometto" 
         .."&age=27" 
         .." HTTP/1.1\r\n" 
         .."Host: 172.0.0.1\r\n" 
         .."Connection: close\r\n" 
         .."Accept: */*\r\n" 
         .."User-Agent: Mozilla/4.0 " 
         .."(compatible; esp8266 Lua; " 
         .."Windows NT 5.1)\r\n" 
         .."\r\n") 
        -- conn:send("what":"books", "count":3) 
         end) 

-- when disconnected, let it be known 
conn:on("disconnection", function(conn, payload) print('\nDisconnected') end) 

conn:connect(80,'192.168.43.181') 

這裏很容易讓我送參數,但是當我想發出一個請求主體我不能,我嘗試添加該代碼發送請求體

,但它不工作 ,我得到這個消息: enter image description here

所以任何一個可以提供任何幫助˚F還是請我?

+1

什麼不工作是什麼呢?註釋掉了'connection:send'調用?它怎麼不起作用? '發送'序列化一個表到json還是你需要自己做? –

+0

'''var superHero'''這似乎對我來說。這是Lua代碼? var不應該在那裏,該表應該是一個字符串,並在PHP的一邊轉換爲json – warspyking

+0

'(「what」:「books」,「count」:3)'同樣,這似乎並不是有效的Lua代碼,這在過去有效嗎? – warspyking

回答

1

所以,首先這是無效的字典的Lua代碼。其次,如果您想發送JSON,則需要使用cjson模塊進行編碼。

試着這麼做

local msg = {"what":"books", "count":3} 
conn:send(cjson.encode(msg))