http - NodeMCU,一个简单的 GET 请求是一个很大的挑战

标签 http lua get nodemcu


我有一个项目正在进行,使用两个 NodeMCU 和 LUA。一个 NodeMCU(服务器)托管一个简单的 Web 服务器,该服务器对特定的 URL 参数使用react。例如,我去:http://192.168.1.179/?pin=ON1在我的浏览器中,它的 LED 灯亮起等。我想通过按一下按钮与其他 NodeMCU(客户端)一起重新创建此操作。唯一阻碍我的是这个 HTTP GET 请求。

对于初学者,我想简单地使用 http 模块 .. 但该模块不存在于可用的最新固件版本中。我不知道这是为什么?我不想构建最新的 - 最新的。 2 版本差异...我已提交自定义构建。

require('http')
stdin:1: module 'http' not found:
no field package.preload['http']
no file 'http.lc'
no file 'http.lua'

显然还有其他更古老的方法:

    conn=net.createConnection(net.TCP, false) 
    conn:on("receive", function(conn, pl) print(pl) end)
    conn:connect(80,"192.168.1.179")
    conn:send("GET /?pin=ON1 HTTP/1.1\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")

我一直在尝试让它发挥作用。 DNS 因完整路径而失败。照原样,它只为打印部分输出 0。请注意,这是一个本地服务器,它的地址是直接指定的。我正在从路由器获取 DHCP,并且尝试使用静态 IP。我不知所措,不知道还能做什么。这也是完成该项目的最后一步,这让我抓狂!任何帮助,将不胜感激。我应该注意到我丢失了我的服务器脚本,所以我无法引用它。它虽然有效。 x_X'

最佳答案

根据 https://github.com/nodemcu/nodemcu-firmware#releases您不能再下载最近的二进制文件(>2y 一直是这样)。最简单的是去https://nodemcu-build.com/并为您构建一个二进制文件。确保选择 HTTP 模块。

但是请注意,HTTP 模块是一个 HTTP 客户端!

关于使用这个 HTTP 模块发出简单的 GET 请求,我建议看一下 https://nodemcu.readthedocs.io/en/latest/en/modules/http/#httpget :

http.get("http://httpbin.org/get?paul=muller", nil, function(code, data)
    if (code < 0) then
      print("HTTP request failed")
    else
      print(code, data)
    end
  end)

这会产生这样的结果:

200 {
  "args": {
    "paul": "muller"
  }, 
  "headers": {
    "Connection": "close", 
    "Host": "httpbin.org", 
    "User-Agent": "ESP8266"
  }, 
  "origin": "xxx.xxx.xxx.xxx", 
  "url": "http://httpbin.org/get?paul=muller"
}

要构建服务器,您需要 net 模块和 net.createServer(net.TCP)。我们在 https://nodemcu.readthedocs.io/en/latest/en/modules/net/#example_6 有一些例子.

我建议不要构建自己的服务器,而是使用 https://github.com/marcoskirsch/nodemcu-httpserver/而不是琐碎项目以外的任何事情。

关于http - NodeMCU,一个简单的 GET 请求是一个很大的挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45365526/

相关文章:

javascript - $http.post 来自模态形式的数据( Angular )

scala - 在 Scala Dispatch 0.9.5 中插入 Oauth header 的方法?

php - 如何隐藏 GET 方法表单或 URL 值?

json - 我可以在 Tumblr 上检索超过 20 个帖子标题名称吗? (通过 JSON)

ruby-on-rails - Google Geocoding API request_denied

java - 不同 URL 的 Netty 处理程序

if-statement - Lua-如果在同一变量上有两个条件的语句?

c++ - 使用 C++ 访问 Lua 全局表

Lua问题: attempt to call global 'unpack' (a nil value)

http - Elasticsearch 用于 POST 的 uri 的 http 方法不正确