Подтвердить что ты не робот

Lua socket POST

Мне сложно использовать lua socket общий POST. Я пытаюсь ПОСТИТЬ в сеть вместе с телом. Но я получаю вывод тела 1. Здесь мой код

local http = require "socket.http"
local ltn12 = require "ltn12"
local util = require "util"
    local reqbody = "anid=&protocol=1&guid=dfe49e55b63f2cf93eb9aabe44b6d9dc5286bbbedfcbf1c75b95f7a4f7439029&d_type=phone&os_version=6.1&ate=1&asid=079ABF64-A23A-4E3B-9000-19A4A608CCBE&affiliate=&modin=7c78d075f379db2f40c9f68df857cb87&os=ios&d_id=107b2734fdb7898251f62d229168484a9d14f7fb654d02d957b30c9f22bb094c&d_code=1E5D02FF-63F3-43A0-A2BF-80E63E00F76C&pn_device_id=&name_hint=iPhone%20Simulator&d_sig=dfe49e55b63f2cf93eb9aabe44b6d9dc5286bbbedfcbf1c75b95f7a4f7439029&hdid=62624a01f8715f2b838224a4a285746d&tracker=&appid=536381662&odin=1da61c680b672c4e114df45cd5f8f0aa9b088338&model=iPhone%20Simulator&ver=15&campaign=&imei=&store_type=apple&"
    local respbody = {} 
    local  body, code, headers, status = http.request {
        method = "POST",
        url = "https://freshdeck.idle-gaming.com/api/guest_session/",
        source = ltn12.source.string(reqbody),
        headers = 
                {
                        ["Accept"] = "*/*",
                        ["Accept-Encoding"] = "gzip, deflate",
                        ["Accept-Language"] = "en-us",
                        ["Content-Type"] = "application/x-www-form-urlencoded",
                        ["content-length"] = string.len(reqbody)
                },
        sink = ltn12.sink.table(respbody)
    }

    LOGINFO('body:' .. tostring(body))
    LOGINFO('code:' .. tostring(code))
    LOGINFO('headers:' .. util.tableToString(headers))
    LOGINFO('status:' .. tostring(status))

и ниже - вывод

body:1
code:200
headers:  "set-cookie": "config_version=887; expires=Sat, 29-Jun-2013 19:07:09 GMT; Max-Age=86400; Path=/"
  "date": "Fri, 28 Jun 2013 19:07:09 GMT"
  "ed-config-version": "887"
  "content-encoding": "gzip"
  "cache-control": "private, no-cache, no-store, must-revalidate"
  "connection": "Close"
  "vary": "Cookie"
  "content-length": "52"
  "pragma": "no-cache"
  "content-type": "application/json; charset=utf-8"
  "server": "nginx/1.2.7"

status:HTTP/1.1 200 OK

Я не знаю, почему тело возвращает 1, любые идеи?

Заранее благодарим вас за помощь.

4b9b3361

Ответ 1

http.request имеет две формы: простая форма загружает URL-адрес с использованием метода GET или POST и основывается на строках.

http.request(url [, body])

Общая форма выполняет любой HTTP-метод и основана на LTN12.

http.request{
  url = string,
  [sink = LTN12 sink,]
  [method = string,]
  [headers = header-table,]
  [source = LTN12 source],
  [step = LTN12 pump step,]
  [proxy = string,]
  [redirect = boolean,]
  [create = function]
}

Вы используете общую форму, и согласно документу, первое возвращаемое значение должно быть равным 1.

В случае сбоя функция возвращает nil, за которой следует сообщение об ошибке. В случае успеха простая форма возвращает тело ответа как строку, за которым следует код состояния ответа, заголовки ответов и строка состояния ответа. Общая функция возвращает ту же информацию, за исключением того, что первое возвращаемое значение - это только номер 1 (тело переходит к приемнику).