Luasec Luasocket https.request 使用自定义 user-agent 并返回 body

我想使用 LuaSec 进行 https.request 并设置自定义 user-agent,我尝试了这篇文章中描述的方法:

https://github.com/brunoos/luasec/wiki/LuaSec-0.4#httpsrequesturl---body

但我不知道如何避免将 http headers 传递给此函数并避免将响应 body 设置为数字 1,如下所述:

如果 url 是一个 table,则函数返回相同的结果,除了响应的 body 被替换为值 1

 local headers = {
    ["user-agent"] = "我的 User Agent",
}

local r, c, h, s = _https.request {
    url = url,
    method = method,
    headers = headers,
}
-- r 是 1,而不是响应主体!

如果我将请求更改为

_https.request("https://my-site-goes-here.com/")

我将获得响应 body,但这样我无法再设置 user-agent。

感谢您的帮助!

点赞
用户5636775
用户5636775

如果您指定了一个表,第一个返回元素 始终1(表示成功); 要接收实际数据,您还需指定一个 sink,用于存储接收到的数据。例如:

local chunks = {}
local r, c, h, s = _https.request {
    url = url,
    method = method,
    headers = headers,
    sink = ltn12.sink.table(chunks)
}
local response = table.concat(chunks)

现在您可以从变量 response 中检索响应。

2018-03-20 15:20:32