1

我正在尝试通过 http 模块 lua-resty-http 发送请求。我如何发送带有正文数据的请求。

我试过这个

hc:connect("127.0.0.1", 82)

dates = ngx.req.get_post_args()

local hc = http:new()

result, errors = hc:request{
    path = requrl,
    method = "POST",
    body = dates,
    headers = {
      ["Host"] = "localhost",
    },
}

基本上我正在尝试将 lua 表发送到另一个服务器位置。以及如何捕获该 lua 表位置。

我会很感激详细的解释。

4

1 回答 1

3

ngx.req.get_post_args()返回键值对表。http 客户端request函数的 body 参数必须采用 OpenResty 的 cosocket sendAPI支持的格式。这意味着要么是一个字符串,要么是一个像保存字符串的表一样的数组。

如果您想发送一个带有 HTTP 请求的 lua 表,那么您需要一种将其编码为字符串的方法。一种常见的方法是使用 JSON,您可以使用捆绑的cjson库来执行此操作:

local json = require "cjson"
local dates = ngx.req.get_post_args()

hc:request {
  body = json.encode(dates),
  ...
}
于 2015-10-03T05:56:03.393 回答