我使用lua 5.1和luaSocket 2.0.2-4从Web服务器检索页面.我首先检查服务器是否正在响应,然后将Web服务器响应分配给lua变量.
local mysocket = require("socket.http")
if mysocket.request(URL) == nil then
print('The server is unreachable on:\n'..URL)
return
end
local response, httpCode, header = mysocket.request(URL)
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,但请求执行两次.我想知道我是否可以做某事(显然不起作用):
local mysocket = require("socket.http")
if (local response, httpCode, header = mysocket.request(URL)) == nil then
print('The server is unreachable on:\n'..URL)
return
end
Run Code Online (Sandbox Code Playgroud) 我正在使用以下版本的 Lua 及其在 openWRT 环境中的数据包:
luasocket-2.0.2
luasec-0.4
lua-5.1.4
尝试使用超时进行https.request通话。尝试使用https.TIMEOUTwherelocal https = require("ssl.https")并且它永远不会超时。我尝试给出一个非常小的timeout(我知道我不会在那个时候得到答案并且互联网连接正常)我也尝试过一次https.request调用网络连接断开时。这是一个已知问题吗?或者我应该为此尝试其他方法。我可以猜测要么send/recieve是无限时间阻止它。
-Swapnel
Lua初学者在这里.:)
我正在尝试通过url加载文件,不知何故,我太愚蠢了,无法在此处获取所有代码示例,以便为我工作.
socket = require("socket")
http = require("socket.http")
ltn12 = require("ltn12")
local file = ltn12.sink.file(io.open('test.jpg', 'w'))
http.request {
url = 'http://pbs.twimg.com/media/CCROQ8vUEAEgFke.jpg',
sink = file,
}
Run Code Online (Sandbox Code Playgroud)
我的程序运行20 - 30s,之后没有保存.有一个创建的test.jpg但它是空的.我也尝试将w + b添加到io.open()第二个参数但是没有用.
很抱歉,如果这是一个简单的解决方案,或者以前已经解决过,但是对于任何类型的网络编程,我都还很遥远,以至于我真的不知道什么是错误的,也没有寻找解决该问题的方法。
我希望能够使用我熟悉的语言Lua(扩展名为luasocket)从“ https://api.coinbase.com/v2/exchange-rates ”(以及其他地方)下载json文件。
我尝试使用http.request和ftp.get,但均未返回任何信息。我不明白为什么我可以在浏览器中转到该网址,并且下载文件,但无法通过luasocket获取文件数据。如果我不能使用luasocket,那么您的Web浏览器发出的请求和luasocket之类的请求之间有什么区别?
当我尝试在Ubuntu上使用LuaSocket创建一个侦听任何端口的套接字时,套接字的创建失败并显示"权限被拒绝":
require("socket")
server, msg = socket.bind("*", 23)
if not server then print(msg) end
Run Code Online (Sandbox Code Playgroud)
但是,当以超级用户(使用sudo)执行相同的脚本时,服务器的创建工作正常.有没有理由说LuaSocket无法正常创建服务器?我可以做任何事情(在Lua或Ubuntu服务器上),这样就不需要以超级用户身份执行脚本了吗?
有没有人知道如何使用Lua套接字用于Corona sdk,我想使用设备将API传递到服务器并将数据从服务器接收回设备.我只找到http://appcodingeasy.com/Gideros-Mobile/Using-LuaSocket-in-Gideros,它适用于Gideros SDK.
任何帮助,将不胜感激.谢谢.
我正在尝试使用 Lua Socket 进行 http get:
local client = socket.connect('warm-harbor-2019.herokuapp.com',80)
if client then
client:send("GET /get_tweets HTTP/1.0\r\n\r\n")
s, status, partial = client:receive(1024)
end
end
Run Code Online (Sandbox Code Playgroud)
我希望s是一条推文,因为我所做的 get 返回一条推文。但我得到:
http/1.1 404 object not found
Run Code Online (Sandbox Code Playgroud) 在我的脚本中,我使用库 LuaSocket 发送 XML 代码。这适用于以下代码:
local request_body = (XMLHeader..XMLBody);
local response_body = {}
local res, code, response_headers = socket.http.request
{
url = "http://blabla.com/v01/Authenticatie.svc";
method = "POST";
headers =
{
["Content-Type"] = "application/soap+xml; charset=utf-8";
["Content-Length"] = string.len(request_body);
["Accept-Encoding"] = "gzip, deflate";
["Connection"] = "Keep-Alive";
};
source = ltn12.source.string(request_body);
sink = ltn12.sink.table(response_body);
}
Run Code Online (Sandbox Code Playgroud)
但是现在我将使用带有证书的协议 HTTPS 发送 XML。我知道我可以使用 LuaSec 但如何使用?有人可以告诉我,我如何将代码修改为 HTTPS 的工作代码?