Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)
cc.XMLHTTPREQUEST_RESPONSE_ARRAY_BUFFER = 1 -- 返回字节数组类型
cc.XMLHTTPREQUEST_RESPONSE_BLOB = 2 -- 返回二进制大对象类型
cc.XMLHTTPREQUEST_RESPONSE_DOCUMENT = 3 -- 返回文档对象类型
cc.XMLHTTPREQUEST_RESPONSE_JSON = 4 -- 返回JSON数据类型
--[[
=================
XMLHttpRequestTest.lua
http请求
=================
]]--
require("json") local function XMLHttpRequestLayer()
local layer = cc.Layer:create()-- 创建层
local winSize = cc.Director:getInstance():getWinSize()-- 得到窗体大小
local margin = 40-- 间距
local space = 35-- 宽度 local function init()
local label = cc.Label:createWithTTF("XML Http Request Test", s_arialPath, 28)-- 使用ttf文字格式的标签
label:setAnchorPoint(cc.p(0.5, 0.5))-- 设置锚点
label:setPosition(cc.p(winSize.width / 2, winSize.height - margin))-- 设置显示位置,宽度为屏幕的中间,高度为屏幕高度减去间距
layer:addChild(label, 0) -- 加入标签到层中 -- 显示返回码的标签
local labelStatusCode = cc.Label:createWithTTF("HTTP Status Code", s_markerFeltFontPath, 20)
labelStatusCode:setAnchorPoint(cc.p(0.5, 0.5))
labelStatusCode:setPosition(cc.p(winSize.width / 2, winSize.height - margin - 6 * space))
layer:addChild(labelStatusCode) local menuRequest = cc.Menu:create() -- 创建菜单
menuRequest:setPosition(cc.p(0,0))
layer:addChild(menuRequest) -- 加入菜单 --Get
local function onMenuGetClicked()
local xhr = cc.XMLHttpRequest:new() -- http请求
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING -- 响应类型
xhr:open("GET", "http://httpbin.org/get") -- 打开链接 -- 状态改变时调用
local function onReadyStateChange()
-- 显示状态文本
local statusString = "Http Status Code:"..xhr.statusText
labelStatusCode:setString(statusString)
print(xhr.response)
end -- 注冊脚本回调方法
xhr:registerScriptHandler(onReadyStateChange)
xhr:send() -- 发送请求 labelStatusCode:setString("waiting...")
end -- 測试Get的标签
local labelGet = cc.Label:createWithTTF("Test Get", s_arialPath, 22)
labelGet:setAnchorPoint(cc.p(0.5, 0.5))
local itemGet = cc.MenuItemLabel:create(labelGet) -- 菜单标签
itemGet:registerScriptTapHandler(onMenuGetClicked) -- 菜单点击事件
itemGet:setPosition(cc.p(winSize.width / 2, winSize.height - margin - space))
menuRequest:addChild(itemGet) -- 加入菜单项 --Post
local function onMenuPostClicked()
local xhr = cc.XMLHttpRequest:new() -- 新建一个XMLHttpRequest对象
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING -- 对应类型为字符串
xhr:open("POST", "http://httpbin.org/post")-- post方式
local function onReadyStateChange()
labelStatusCode:setString("Http Status Code:"..xhr.statusText)
print(xhr.response)
end
-- 注冊脚本方法回调
xhr:registerScriptHandler(onReadyStateChange)
xhr:send()-- 发送 labelStatusCode:setString("waiting...")
end -- 測试Post的标签
local labelPost = cc.Label:createWithTTF("Test Post", s_arialPath, 22)
labelPost:setAnchorPoint(cc.p(0.5, 0.5)) -- 设置锚点
local itemPost = cc.MenuItemLabel:create(labelPost) -- 设置菜单项标签
itemPost:registerScriptTapHandler(onMenuPostClicked) -- 注冊菜单项点击回调方法
itemPost:setPosition(cc.p(winSize.width / 2, winSize.height - margin - 2 * space))
menuRequest:addChild(itemPost) --Post Binary
local function onMenuPostBinaryClicked()
local xhr = cc.XMLHttpRequest:new()-- 新建一个XMLHttpRequest对象
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_ARRAY_BUFFER --返回数据为字节流
xhr:open("POST", "http://httpbin.org/post") -- 打开Socket -- 状态改变时调用
local function onReadyStateChange()
local response = xhr.response -- 获得返回数据
local size = table.getn(response) -- 获得返回数据大小
local strInfo = "" for i = 1,size do
if 0 == response[i] then
strInfo = strInfo.."\'\\0\'"
else
strInfo = strInfo..string.char(response[i])
end
end
labelStatusCode:setString("Http Status Code:"..xhr.statusText)
print(strInfo)
end -- 注冊脚本方法回调
xhr:registerScriptHandler(onReadyStateChange)
xhr:send()-- 发送 labelStatusCode:setString("waiting...")
end -- 測试使用Post请求方式发送字节流
local labelPostBinary = cc.Label:createWithTTF("Test Post Binary", s_arialPath, 22)
labelPostBinary:setAnchorPoint(cc.p(0.5, 0.5))
local itemPostBinary = cc.MenuItemLabel:create(labelPostBinary)
itemPostBinary:registerScriptTapHandler(onMenuPostBinaryClicked)
itemPostBinary:setPosition(cc.p(winSize.width / 2, winSize.height - margin - 3 * space))
menuRequest:addChild(itemPostBinary) --Post Json
local function onMenuPostJsonClicked()
local xhr = cc.XMLHttpRequest:new() -- 新建一个XMLHttpRequest对象
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON -- json数据类型
xhr:open("POST", "http://httpbin.org/post")-- POST方式 local function onReadyStateChange()
-- 显示状态码,成功显示200
labelStatusCode:setString("Http Status Code:"..xhr.statusText)
local response = xhr.response -- 获得响应数据
local output = json.decode(response,1) -- 解析json数据
table.foreach(output,function(i, v) print (i, v) end)
print("headers are")
table.foreach(output.headers,print)
end -- 注冊脚本方法回调
xhr:registerScriptHandler(onReadyStateChange)
xhr:send()-- 发送请求 labelStatusCode:setString("waiting...")
end -- 測试使用POST方式发送json的标签
local labelPostJson = cc.Label:createWithTTF("Test Post Json", s_arialPath, 22)
labelPostJson:setAnchorPoint(cc.p(0.5, 0.5)) -- 锚点
local itemPostJson = cc.MenuItemLabel:create(labelPostJson) -- 菜单项标签
itemPostJson:registerScriptTapHandler(onMenuPostJsonClicked) -- 注冊菜单项点击
itemPostJson:setPosition(cc.p(winSize.width / 2, winSize.height - margin - 4 * space))
menuRequest:addChild(itemPostJson)
end -- 节点回调事件
local function onNodeEvent(eventName)
if "enter" == eventName then
init()
end
end -- 注冊层的监听回调事件
layer:registerScriptHandler(onNodeEvent) return layer
end function XMLHttpRequestTestMain()
local scene = cc.Scene:create() -- 创建场景
scene:addChild(XMLHttpRequestLayer()) -- 加入层
scene:addChild(CreateBackMenuItem()) -- 加入返回菜单项,详细实现查看helper.lua文件
return scene
end
Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)的更多相关文章
- Cocos2d-x 3.1.1 Lua演示样例 ActionManagerTest(动作管理)
Cocos2d-x 3.1.1 Lua演示样例 ActionManagerTest(动作管理) 本篇博客介绍Cocos2d-x的动作管理样例,这个样例展示了Cocos2d-x的几个动作: MoveTo ...
- Cocos2d-x 3.1.1 Lua演示样例 ActionEaseTest(动作)
Cocos2d-x Lua演示样例 ActionEaseTest(动作) 本篇博客介绍Cocos2d-x中的动作,Cocos2d-x为我们提供了丰富的动作接口,以下笔者就具体介绍一下: 本系列 ...
- Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试)
Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中点击移动的样例,在这个样例你能够得到怎样创建单点触 ...
- Cocos2d-x 3.2 Lua演示样例 AssetsManagerTest(资源管理器)
Cocos2d-x 3.2 Lua演示样例 AssetsManagerTest(资源管理器) 本篇博客介绍Cocos2d-x 为我们提供的一个类--AssetsManager在Lua中的使用样例,效果 ...
- Cocos2d-x 3.1.1 Lua演示样例 ActionsProgressTest(进度条)
Cocos2d-x 3.1.1 Lua演示样例 ActionsProgressTest(进度条) 本篇博客介绍Cocos2d-x中的进度条动画,进度条涉及以下几个重要的类和方法,笔者来给大家具体解说一 ...
- Cocos2d-x 3.2 Lua演示样例CurrentLanguageTest(当前语言环境)
Cocos2d-x 3.2 Lua演示样例CurrentLanguageTest(当前语言环境) 转载请注明:IT_xiao小巫 本篇博客介绍Cocos2d-x 3.2给我们提供的一个样例.获取当前程 ...
- Cocos2d-x 3.2 Lua演示样例FontTest(字体測试)
Cocos2d-x 3.2 Lua演示样例FontTest(字体測试) 本篇博客介绍Cocos2d-x 3.2中Lua測试项目中的FontTest样例,主要使用了字体文件来创建我们想要的字体样式: 第 ...
- ArcGIS教程:地理处理服务演示样例(河流网络)(三)
设置输出符号系统 步骤: 展开 StoweStreamNet.tbx 并双击创建河流网络模型. 接受默认的 45 公顷并单击确定以运行模型. StreamNet 图层将加入至 ArcMap. 右键单击 ...
- Cocos2d-x-Lua演示样例项目HelloLua
Cocos2d-x-Lua演示样例项目HelloLua 本篇博客介绍Cocos2d-x中Lua的实例项目,就是使用Cocos2d-x创建的初始项目执行所呈现的农场,这里笔者取名为HelloLua.本篇 ...
随机推荐
- cocos2dx之lua项目开发中MVC框架的简单应用
**************************************************************************** 时间:2015-03-31 作者:Sharin ...
- hdu2647 逆拓扑,链式前向星。
pid=2647">原文地址 题目分析 题意 老板发工资,可是要保证发的工资数满足每一个人的期望,比方A期望工资大于B,仅仅需比B多1元钱就可以.老板发的最低工资为888元.输出老板最 ...
- Citrix 服务器虚拟化之三十一 XenApp 6.5负载均衡
Citrix 服务器虚拟化之三十一 XenApp 6.5负载均衡 说明: 环境基于实验三十 1.准备一台Windows Server 2008 R2的虚拟机名为XenAPP2,然后加入域k ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- java之jvm学习笔记十三(jvm基本结构)
java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...
- Linux Shell脚本编程--curl命令详解
用途说明 curl命令是一个功能强大的网络工具,它能够通过http.ftp等方式下载文件,也能够上传文件.其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息.类 ...
- CI(codeigniter)框架,routes.php设置正确,但是显示服务器错误,是__construct少写了一个下划线
今天弄了一下CI框架,大概看了一下文档,感觉CI框架非常精简,但是在做的时候遇到了问题,CI文档中提供了一个新闻系统的例子,所有工作都做完了,在浏览器中打开相对应的url是,却显示“服务器错误”,一点 ...
- loj1341(数学)
传送门:Aladdin and the Flying Carpet 题意: 给出两个正整数1<=m<=n<=1e12.问N可以拆成多少对p*q,使得p和q中最小的不小于a,且p!=q ...
- 你是否是团队里面最默默付出的那个coder,却发现滔滔不绝的产品和设计是团队里的开心果(转)
程序员,你是否是团队里面最默默付出的那个coder,却发现滔滔不绝的产品和设计是团队里的开心果? 你是否自命不凡,精通Java.C++.Python……却发现得到的只是做不完的工作? 你是否觉得自己是 ...
- Android 框架炼成 教你怎样写组件间通信框架EventBus
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41096639 .本文出自:[张鸿洋的博客] 1.概述 关于Eventbus的介绍 ...