2015-07-09 5 views
0

Я пытаюсь отправить запрос через http-модуль lua-resty-http. Как я могу отправить запрос с данными тела.Отправить запрос с телом с openresty lua-resty-http module

Я попробовал этот

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.

Буду признателен за подробное объяснение.

ответ

0

ngx.req.get_post_args() возвращает таблицу ключей, пар значений. Аргумент body для функции http-клиента request должен быть в format supported by OpenResty's cosocket send API. Это означает либо строку, либо массив, как таблицы, содержащие строки.

Если вы хотите отправить таблицу lua с HTTP-запросом, вам понадобится способ ее кодирования в строку. Общий подход заключается в использовании JSON, и вы можете сделать это с помощью библиотеки cjson:

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

hc:request { 
    body = json.encode(dates), 
    ... 
}