私は、サードパーティのプログラム (私のスクリプトで特定の関数を呼び出すいくつかの .exe) によってホストされる Lua スクリプトに取り組んでいます。必要な機能を実装するために (特定の情報を取得するために Web サービスに残りの呼び出しを行う)、 を使用したいと考えていますsocket.http.request
。
最初に、作成したい呼び出しのサンプル スクリプトを作成しました。
local io = require("io")
local http = require("socket.http")
local ltn12 = require("ltn12")
local data = "some data")
local response = {}
socket.http.request({
method = "POST",
url = "http://localhost:8080/someServce/rest/commands/someCommand",
headers = {
["Content-Type"] = "application/x-www-form-urlencoded",
["Content-Length"] = string.len(data)
},
source = ltn12.source.string(data),
sink = ltn12.sink.table(response)
})
print(table.concat(response))
print("Done")
これはうまくいきます。期待どおりの応答が得られます。サードパーティのホストからこれを実行しようとすると、最初にエラーが発生しました。
module 'socket.http' not found:
no field package.preload['socket.http']
no file '.\socket\http.lua'
no file 'D:\SomeFolder\lua\socket\http.lua'
no file 'D:\SomeFolder\lua\socket\http\init.lua'
no file 'D:\SomeFolder\socket\http.lua'
no file 'D:\SomeFolder\socket\http\init.lua'
no file 'C:\Program Files (x86)\Lua\5.1\lua\socket\http.luac'
no file '.\socket\http.dll'
no file 'D:\SomeFolder\socket\http.dll'
no file 'D:\SomeFolder\loadall.dll'
no file '.\socket.dll'
no file 'D:\SomeFolder\socket.dll'
no file 'D:\SomeFolder\loadall.dll'
ソケット フォルダーを LUA フォルダーからホストが実行されているフォルダー (D:\SomeFolder) にコピーしようとしました。次に、モジュールを見つけますが、別のエラーでロードに失敗します:
loop or previous error loading module 'socket.http'
また、require ステートメントを関数の外に移動してグローバルにしようとしました。これにより、さらに別のエラーが発生します。
module 'socket.core' not found:
no field package.preload['socket.core']
no file '.\socket\core.lua'
no file 'D:\SomeFolder\lua\socket\core.lua'
no file 'D:\SomeFolder\lua\socket\core\init.lua'
no file 'D:\SomeFolder\socket\core.lua'
no file 'D:\SomeFolder\socket\core\init.lua'
no file 'C:\Program Files (x86)\Lua\5.1\lua\socket\core.luac'
no file 'C:\Program Files (x86)\Lua\5.1\lua\socket\core.lua'
no file '.\socket\core.dll'
no file 'D:\SomeFolder\socket\core.dll'
no file 'D:\SomeFolder\loadall.dll'
no file '.\socket.dll'
no file 'D:\SomeFolder\socket.dll'
no file 'D:\SomeFolder\loadall.dll'
次に、core.dll をソケットから D:\SomeFolder フォルダーにコピーしようとしましたが、別のエラーが発生しました。
error loading module 'socket.core' from file '.\socket\core.dll':
%1 is not a valid Win32 application.
今、私は立ち往生しています。完全に間違ったことをしているに違いないと思いますが、このような問題を修正する方法についての適切な説明が見つかりません。誰でも私を助けることができますか?