Lua отправляет тело запроса json

я очень новичок в LUA, и я пытаюсь отправить json-сообщение с моего ESP8266, используя LUA, на PHP-сервер на моем локальном хосте, я искал в Интернете и не могу найти ни одного примера, который может мне помочь?

мой 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') 

здесь мне легко отправить параметры, но когда я хочу отправить тело запроса, я не могу, я попытался добавить этот код для отправки тела запроса

conn:send("what":"books", "count":3 )

но это не работает, и я получаю это сообщение: введите здесь описание изображения

так может ли кто-нибудь оказать любую помощь для меня, пожалуйста?


person mohammad    schedule 31.10.2015    source источник
comment
Что именно не работает? Закомментированный вызов connection:send? Как это не работает? send сериализует таблицу в json или вам нужно сделать это самостоятельно?   -  person Etan Reisner    schedule 01.11.2015
comment
var superHero Мне это кажется неправильным. Это код Lua? var там быть не должно, а таблица должна быть строкой и конвертироваться в json на стороне php   -  person warspyking    schedule 01.11.2015
comment
("what":"books", "count":3 ) Опять же, это неверный код Lua, работало ли это раньше?   -  person warspyking    schedule 07.11.2015


Ответы (1)


Итак, во-первых, это неверный код Lua для словаря. Во-вторых, если вы хотите отправить JSON, вам нужно будет закодировать его с помощью модуля cjson.

Попробуйте что-то вроде

local msg = {"what":"books", "count":3}
conn:send(cjson.encode(msg))
person Tom Parker-Shemilt    schedule 08.11.2015