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.本篇 ...
随机推荐
- Microsoft2013校园招聘笔试题及解答
继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently store the book orders ...
- IOS-UITextField-邮箱后缀联想赛
最近做的项目,有一个函数,百度了一下 结果没 要研究了一下. 当用户输入邮箱形式的账号时,输入完"@"符号后.联想出经常使用的邮箱 点击某一行,将改行代表邮箱自己主动输入到账号输入 ...
- JavaEE session机制
JavaEE session机制 Http协议: 在讲session之前,必须说下Http协议,HTTP是一个client和server端请求和应答的标准(TCP).由HTTPclient发起一个请求 ...
- 23、Cocos2dx 3.0游戏开发找小三之粒子系统:你那里下雪了吗?
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30485919 春雨惊春清谷天,夏满芒夏暑相连, 秋处 ...
- INSTALL_FAILED_MEDIA_UNAVAILABLE错误处理
问题描写叙述: 在android手机上安装apk的时候,报错例如以下: Installation error: INSTALL_FAILED_MEDIA_UNAVAILABLE Please chec ...
- C#的百度地图开发(二)转换JSON数据为相应的类
原文:C#的百度地图开发(二)转换JSON数据为相应的类 在<C#的百度地图开发(一)发起HTTP请求>一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON ...
- cocos2d-x ios游戏开发初认识(五) CCsprite精灵类
这次写一下精灵创建的几种类型: 一.通过文件创建: 在原有的基础上加入例如以下代码: //一.通过文件创建精灵 CCSprite *bg =CCSprite::create("map.png ...
- Kdd Cup 2013 总结2
- Oracle本地管理对照数据字典管理表空间
Locally vs. Dictionary Managed Tablespaces 整理自:http://www.orafaq.com/node/3. When Oracleallocates sp ...
- JUnit4.8.2来源分析-6.1 排序和过滤
Runner.sort.Request.sortWith和Sorter.apply yqj2065很快,他们搞死. Sorter.apply().Request.sortWith()和Sortable ...