【发布时间】:2013-09-28 02:19:51
【问题描述】:
我正在开发一个由第三方程序托管的 Lua 脚本(一些 .exe 将在我的脚本中调用某个函数)。为了实现我需要的功能(对网络服务进行休息调用以检索某些信息),我想使用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 从 socket 复制到 D:\SomeFolder 文件夹中,它给了我另一个错误:
error loading module 'socket.core' from file '.\socket\core.dll':
%1 is not a valid Win32 application.
现在我被困住了。我想我一定是在做完全错误的事情,但是我找不到任何关于如何解决此类问题的正确描述。谁能帮帮我?
【问题讨论】:
-
第三方主机运行的是什么操作系统?
-
@luastoned:目前一切都在 Windows 上运行。我正在自己的 Windows 7 系统上解决这个问题。