使用 luasocket 下载文件

对不起,如果这有一个简单的解决方案,或者在以前已解决,但我远离任何形式的网络编程,我真的不知道什么是错误,也不知道该搜索什么来解决它。

我想使用我熟悉的语言 Lua 和扩展程序 luasocket,从" https://api.coinbase.com/v2/exchange-rates"(和其他地方)下载一个 json 文件。

我尝试过使用 http.requestftp.get,但都没有返回任何信息。我不明白为什么我能在浏览器上访问这个网址,下载一个文件,但是我却不能通过 luasocket 获取文件数据。如果我不能使用 luasocket,那么从您的网络浏览器发出的请求与从 luasocket 等工具发出的请求有什么区别呢?

点赞
用户4567755
用户4567755

正如您所看到的,您拥有的 URL 是 https 而不是普通的 http。您需要使用加密连接。而不是使用 luasocket,可以使用 luasec(实际上,luasec 依赖于 luasocket,但现在让我们不去管它;简单来说,从 luasec 中的 https.request 是建立在 luasocket 中的 http.request 之上的)。

local https = require "ssl.https" --luasec
local r, c, h, s = https.request {
    url = "https://api.coinbase.com/v2/exchange-rates",
    sink = ltn12.sink.file(io.stdout)
}

这将在控制台中打印所请求内容的正文。

更多关于 luasocket 的 httpluasec 的 https 的信息。

2017-05-31 21:47:46