ここに来るのは初めてで、フォーラムに参加することを考えました。なぜなら、私は Lua プログラミングが初めてで、HTTP Post メソッドをほとんどあきらめていたからです。
ESP8266(NodeMCUで実行)を使用してIOTを試し、ESPloreを使用してLuaプログラムをESP8266に送信しています。
したがって、私のプログラムの目的は、API を呼び出し、ESP8266 で実行されている Lua プログラムを使用していくつかのパラメーターをポストすることです。
私は次のアプローチを試しました -
1.HTTP ポストの使用
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 の場合、私のコードの問題は何ですか。
b. Luasocket の場合、ラップトップでコンパイラを使用していないため、ESP8266 に送信するにはどうすればよいですか。