2

我需要从 Lua 中的 URL 加载 mp3 文件。

我已经尝试过了,但它不起作用。

require "socket.http"

local resp, stat, hdr = socket.http.request{
  url     = "https://www.dropbox.com/s/hfrdbncfgbsarou/hello.mp3?dl=1",
}

local audioFile = audio.loadSound(resp)
audio.play(audioFile)

有任何想法吗?

4

1 回答 1

1

request功能被“重载”(在其他语言的术语中)。如文档中所述,它具有三个签名:

local responsebodystring, statusnumber, headertable, statusstring 
  = request( urlstring ) -- GET

local responsebodystring, statusnumber, headertable, statusstring 
  = request( urlstring, requestbodystring ) -- POST

local success, statusnumber, headertable, statusstring 
  = request( requestparametertable ) -- depends on parameters

有关详细信息,尤其是有关错误结果的信息,请参阅文档。

对于最后一种形式,Lua 语法允许使用表构造函数调用函数,而不是括号中的单个表参数。这就是您使用的形式和语法。但是,您错误地认为第一个返回值是响应体。响应正文被传递到请求参数表中可选地指示的“接收器”函数,而您没有该函数。

尝试第一种形式:

local resp, stat, hdr 
  = socket.http.request("https://www.dropbox.com/s/hfrdbncfgbsarou/hello.mp3?dl=1")
于 2013-08-10T14:17:06.337 回答