这是我第一次来这里并想加入论坛,因为我是 Lua 编程的新手,几乎已经放弃了 HTTP Post 方法。
我正在尝试使用 ESP8266(在 NodeMCU 上运行)并使用 ESPlore 将 Lua 程序发送到 ESP8266 进行 IOT。
因此,我的程序的目标是使用在 ESP8266 上运行的 Lua 程序调用 API 并发布一些参数。
我尝试了以下方法 -
1.使用HTTP Post
conn=net.createConnection(net.TCP, 0)
conn:on("receive", display)
conn:connect(80,HOST)
conn:on("connection",function(obj)
local post_request = build_post_request(HOST,URI)
obj:send(post_request)
end
----功能如下------------------------------------------- ---------
function build_post_request(host, uri)
local data = ""
data = "param1=1¶m2=2"
request = "POST uri HTTP/1.1\r\n"..
"Host: example.com\r\n"..
"apiKey: e2sss3af-9ssd-43b0-bfdd-24a1dssssc46\r\n"..
"Cache-Control: no-cache\r\n"..
"Content-Type: application/x-www-form-urlencoded\r\n"..data
return request
end
- - - - - - - - 回复 - - - - - - - - - - - - - - - - - -----
HTTP/1.1 400 Bad Request
Date: Sun, 11 Oct 2015 16:10:55 GMT
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 968
Connection: close
Apache Tomcat/7.0.54 - 错误报告
客户端发送的请求在语法上不正确。
我不明白它有什么问题。
2.使用Luasocket
我在我的程序中包含以下内容 -
local http = require"socket.http"
local ltn12 = require"ltn12"
它会引发以下错误-
script1.lua:3: module 'socket.http' not found:
no field package.preload['socket.http']
no file 'socket/http.lc'
no file 'socket/http.lua'
我不知道如何获取这些库并发送到 ESP8266 并且不确定这是否足够。
问题 :
这是使用 API 将数据发布到服务器的最佳方法。
一个。如果是 HTTP Post,我的代码有什么问题。
湾。如果 Luasocket 那么我如何将它发送到 ESP8266,因为我没有在我的笔记本电脑上使用编译器。