Lua - 等待 Http 响应

Posted

技术标签:

【中文标题】Lua - 等待 Http 响应【英文标题】:Lua - Waiting for Http Response 【发布时间】:2015-12-28 19:42:12 【问题描述】:

注意:这是 Roblox 的 Lua 版本。

我正在研究如何将 JSONEncoded 表上传到 pastebin。它说我需要通过发送带有我的开发密钥、用户名和密码的 PostAsync 并使用我的登录会话密钥等待来自 pastebin 的响应来获取登录会话密钥。到目前为止,这是我的代码:

h = game:GetService'HttpService'
pasteData = h:UrlEncode(h:JSONEncode(ImgScript))
username = 'USERNAMEHERE'
password = 'PASSWORDHERE'
h:PostAsync(
    'http://pastebin.com/api/api_login.php',
    'api_dev_key=DEVKEYHERE&api_user_name=' .. h:UrlEncode(username) .. '&api_user_password=' .. h:UrlEncode(password),
    2
)

api_user_key = GeneratedUserKeyHere --THIS is what I am after; I don't know how to wait for a response from Pastebin to get this key!
h:PostAsync(
    'http://pastebin.com/api/api_post.php',
    'api_dev_key=' .. api_dev_key .. 'api_option=paste&api_user_key=' .. api_user_key .. '&api_paste_private=1&api_paste_expire_date=N&api_paste_format=lua&api_paste_code=' .. h:UrlEncode(h:JSONEncode(ImgScript)) --ImgScript is the table,
    2
)

【问题讨论】:

这不是普通的lua;这是什么应用程序?您需要查阅他们的文档。 抱歉,忘记补充这是 Rbx.Lua(Roblox 的 Lua 版本) 怎么了?正在输出什么?请提供更多信息。另外,请查看roblox.com/games/290746985/SMessageCleaner-OPEN 以获取如何粘贴到 pastebin 的示例您不知道如何获取响应并解释它吗?你被什么困住了? 不知道怎么等api_user_key发回给我用来粘贴。 终于,我想通了!所以我还没有意识到PostAsync 本质上是什么;我以为它只发送数据而没有收到任何数据。所以我将api_user_key 设置为登录脚本,因为当我提供开发密钥和登录详细信息时它返回了用户密钥。我会将工作代码添加到需要此问题的任何人的问题中。 【参考方案1】:

好的,我想通了。 PostAsync 不仅发送数据,还接收返回的用户密钥,所以这里是工作脚本。

h = game:GetService'HttpService'
api_dev_key = 'YourDevKeyHere'
api_paste_code = 'The text of your upload content here'
api_paste_private = '1' --0 public; 1 unlisted; 2 private
api_paste_name = 'The name of your paste here' 
api_paste_expire_date = 'N' --N for never, 10M for 10 minutes, etc.
api_paste_format = 'lua' --The syntax highlighting
api_user_key = ''
api_paste_name = h:UrlEncode(api_paste_name)
api_paste_code = h:UrlEncode(api_paste_code)
username = 'YourUsernameHere'
password = 'YourPasswordHere'

api_user_key = h:PostAsync(
    'http://pastebin.com/api/api_login.php',
    'api_dev_key=' .. api_dev_key .. '&api_user_name=' .. username .. '&api_user_password=' .. password,
    2
)
print(api_user_key) --DON'T DELETE THIS! IT IS ESSENTIAL FOR THE USER KEY TO BE GENERATED!
h:PostAsync(
    'http://pastebin.com/api/api_post.php',
    'api_option=paste&api_user_key=' .. api_user_key .. '&api_paste_private=' .. api_paste_private .. '&api_paste_name=' .. api_paste_name .. '&api_paste_expire_date=' .. api_paste_expire_date .. '&api_paste_format=' .. api_paste_format .. '&api_dev_key=' .. api_dev_key .. '&api_paste_code=' .. api_paste_code,
    2
)

【讨论】:

这是一个免费的 Roblox 模型:roblox.com/Pastebin-Upload-item?id=302297532

以上是关于Lua - 等待 Http 响应的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Java 或 JavaScript 中发出 HTTP (POST) 请求而无需等待响应

Angular 2,轮询 http 请求并等待缓慢的响应

从 PHP 发送 HTTP 请求而不等待响应?

如何在 koa 中发送 HTTP 响应之前等待 url 回调?

让lua脚本等待/暂停/睡眠/阻塞几秒钟的最简单方法?

让lua脚本等待/暂停/睡眠/阻塞几秒钟的最简单方法?