如果这个问题有一个简单的解决方案,或者这个问题以前已经解决过,我很抱歉,但我远离任何类型的网络编程,我真的不知道什么是错误的,也不知道要搜索什么修复它。
我希望能够使用我熟悉的语言 Lua 从“https://api.coinbase.com/v2/exchange-rates”(和其他地方)下载 json 文件,扩展名为 luasocket。
我尝试过使用http.request
和ftp.get
,但都没有返回任何类型的信息。我不明白为什么我可以在浏览器上访问该网址,并下载文件,但我无法通过 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和 luasec's https .
关于lua - 使用 luasocket 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44294288/