使用 luasocket 下载文件

Downloading a file using luasocket

很抱歉,如果这有一个简单的解决方案,或者如果这个问题之前已经解决过,但到目前为止我已经远离任何类型的网络编程,我真的不知道哪里出了问题,也不知道要搜索什么修复它。

我希望能够使用我熟悉的语言 Lua 从“https://api.coinbase.com/v2/exchange-rates”(和其他地方)下载一个 json 文件,扩展名是, luasocket.

我试过使用 http.requestftp.get,但都没有 returns 任何类型的信息。我不明白为什么我可以在浏览器上访问那个url,它下载了一个文件,但是我无法通过luasocket获取文件数据。如果我不能使用 luasocket,那么从你的网络浏览器发出的请求和从类似 luasocket 的东西发出的请求有什么区别?

如您所见,您拥有的 URL https 不是普通的 http。您需要使用加密连接。使用 luasec 而不是 luasocket (实际上 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's http and luasec's https