Lua socket HTTP 获取连接被拒绝。

我正在尝试使用 Lua socket.http 创建一个函数,以在 Github 存储库中创建问题,但每次都会出现连接被拒绝的情况。关于 socket 的文档有点不清晰,我也找不到更有帮助的信息,解释为什么每次请求都被拒绝。我尝试了以下操作:

local config = {
    token = "github 的 oauth token"
}

local http, ltn12 = require("socket.http"), require("ltn12")
local payload = '{"title": "Test", "body": "Test body", "labels": ["bug"]}'
local response, status, headers, line = http.request("https://api.github.com/repos/<username>/<repository>/issues?access_token=" .. config.token, payload)

所以我再次检查了如何进行请求,并且有第二种形式可以进行请求。我正在尝试以下操作:

local response = {}
local _, status, headers, line = http.request{
    url = "https://api.github.com/repos/<username>/<repository>/issues",
    sink = ltn12.sink.table(response),
    method = "POST",
    headers = {
        ["Authorization"] = "token " .. config.token,
        ["Content-Length"] = payload:len()
    },
    source = ltn12.source.string(payload)
}

根据 socket 的文档,这应该向 URL 发送负载作为请求正文进行 POST 请求。如果我 print(status),它会打印“连接被拒绝”。

我忽略了第一个返回值,因为它总是返回 1。

我尝试手动使用 curl 发出请求:

curl -H "Authorization: token <oauth token from github>" https://api.github.com/repos/<username>/<repository>/issues -XPOST -d '{"title": "Test", "body": "{"title": "Test", "body": "Test body", "labels": ["bug"]}'

它正确地发布了问题。我仍然无法弄清楚为什么连接被拒绝。

点赞