使用openresty lua-resty-http模块发送带有请求体的请求。

我正在尝试通过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表位置捕获。

我将不胜感激地得到详细的解释。

点赞
用户127833
用户127833

ngx.req.get_post_args() 返回一个键值对的表。HTTP客户端的 request 函数的 body 参数必须是OpenResty 的 cosocket send API支持的格式。这意味着要么是一个字符串,要么是包含字符串的数组格式表。

如果你想发送一个 lua 表格到一个 HTTP 请求中,你需要把它编码成一个字符串。通常的方法是使用JSON,你可以使用附带的 cjson 库来实现:

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

hc:request {
  body = json.encode(dates),
  ...
}
2015-10-03 05:56:03