Lua HTTP PostAsync

我正在开发一个脚本,这是我目前的代码:

local hs = game.HttpService
local url = "http://sugargrovetemp.comli.com/NiceAdmin/currentusers.php"
local data = {
    ["name"] = player.Name,
    ["userid"] = player.UserId
}
data = hs:JSONEncode(data)
gotback = hs:PostAsync(url, data)
data = hs:JSONDecode(data)
print("已将 "..player.Name..","..player.UserId.." 成功添加到 php 文件中!")

我还不太熟悉 PostAsync 这个函数,有谁能帮帮我吗?

点赞
用户1878009
用户1878009

Async 意味着非同步,基本上就是它会等待消息发送成功(就像运行 wait() 一样),然后才运行其余的代码。

另外,如果这是你的问题,你刚刚对刚刚编码的数据使用了 JSONDecode,而不是变量“gotback”。

2016-10-30 21:43:58
用户5563012
用户5563012

确保你正在发送服务器能够理解的格式(ApplicationUrlEncoded)

gotback = hs:PostAsync(url, data, "ApplicationUrlEncoded")
2016-11-05 19:11:25
用户7452073
用户7452073

我觉得你原本的代码不错,但我有个更可靠且不麻烦的解决方法:

-- assert(game:GetService('HttpService').HttpEnabled == true)

local function send(tab, url)
    local HttpService = game:GetService('HttpService')
    local url = (url) and (url)
        or "http://sugargrovetemp.comli.com/NiceAdmin/currentusers.php"
    local data = HttpService:JSONEncode(tab)

    data:PostAsync(url, data, "ApplicationJson")
end

如果你不想等待回调,那就使用这个适用于协程的版本:

local function send(tab, url)

    local function process(tab, url)
        local HttpService = game:GetService('HttpService')
        local url = (url) and (url)
            or "http://sugargrovetemp.comli.com/NiceAdmin/currentusers.php"
        local data = HttpService:JSONEncode(tab)

        data:PostAsync(url, data, "ApplicationJson")
    end

    local newThread = coroutine.create(function()
        process(tab, url)
    end)

    coroutine.resume(newThread)
    return newThread
end

希望能对你有所帮助!

2017-01-22 04:13:42