Lua的等效CURL,(Django API Json转换为Lua Json)POST方法。
2012-5-29 4:0:56
收藏:0
阅读:248
评论:1
我有一个Django项目,在其中有用于JSON的API,我希望在我的Lua(Corona SDK)项目中获取它。
如果我使用 CURL 请求我的Django项目:
curl -l -X POST -d "message=getstrings" http://127.0.0.1:8000/api/getstrings/
这将返回以下内容:
{
"message": "Something good happened on the server!",
"data": [
{
"code": "003",
"doc1": "sd.doc",
"title": "Test",
"artist": "ABBA",
"img": "sd.png",
"genre": "Pop"
},
{
"code": "004",
"doc1": "sdsd.doc",
"title": "sdf",
"artist": "ABBA",
"img": "sdsd.png",
"genre": "Pop"
}
],
"success": true
}
我有一个使用Lua中post方法的json问题。我希望获取Lua中返回的JSON。
我在我的Lua中尝试以下代码:
local response = {}
local r, c, h = http.request{
url= "http://127.0.0.1:8000/api/getstrings/",
method = "POST",
headers = {
["content-length"] = "",
["Content-Type"] = "application/x-www-form-urlencoded"
},
source = ltn12.source.string(post),
sink = ltn12.sink.table(response)
}
local path = system.pathForFile("r.txt", system.DocumentsDirectory)
local file = io.open (path, "w")
file:write (response[1] .. "\n")
io.close (file)
当我打开 r.txt 文件时,我得到以下错误信息:
File "home/myhome/workspace/djangoproj/api/handlers.py", line 21, in create
if attrs['message'] == 'getstrings':
KeyError: 'message'
我知道错误的原因在于message及其值没有被Lua传递。我的问题是在Lua中等效于这个CURL命令:
curl -l -X POST -d "message=getstrings" http://127.0.0.1:8000/api/getstrings/
这样Lua就可以下载返回的JSON了? 我的代码是否正确?有谁能帮我解决这个问题吗?感谢您的帮助。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
为什么不使用 Corona 提供的 network.request 函数呢?它也是异步的。
local function listener(event) print(event.response) print(event.isError) print(event.status) end local url = "http://127.0.0.1:8000/api/getstrings/" local body = "message=getstrings" local headers = {} headers["content-length"] = body:len(), headers["Content-Type"] = "application/x-www-form-urlencoded" local postData = {} postData.body = body postData.headers = headers network.request(url,"POST",listener,postData)在这里阅读更多信息: http://developer.anscamobile.com/reference/index/networkrequest
EDIT
如果你真的想使用 http.request,那么你可以这样做。
local url = "http://127.0.0.1:8000/api/getstrings/" local body = "message=getstrings" local headers = { ["content-length"] = body:len(), ["Content-Type"] = "application/x-www-form-urlencoded" } local response = {} local r, c, h = http.request{ url= url, method = "POST", headers = headers, source = ltn12.source.string(body), sink = ltn12.sink.table(response) }