Lua中http设置
【链接】XMLHttpRequest
https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest
local MainScene = class("MainScene", cc.load("mvc").ViewBase)
function MainScene:onCreate()
-- add background image
-- display.newSprite("bg1.png")
-- :move(display.center)
-- :addTo(self)
--注册按钮 (get)
self.register_Btn = ccui.Button:create();
self.register_Btn:setTitleText("help");
self.register_Btn:setTitleFontSize(20)
self.register_Btn:setPosition(cc.p(display.cx,display.cy+100));
self:addChild(self.register_Btn);
self.register_Btn:addClickEventListener(function ( )
print("注册!")
local xhr = cc.XMLHttpRequest:new() --创建一个请求
--[[
数据返回格式 xhr.responseType
cc.XMLHTTPREQUEST_RESPONSE_STRING = 0 -- 返回字符串类型
cc.XMLHTTPREQUEST_RESPONSE_ARRAY_BUFFER = 1 -- 返回字节数组类型
cc.XMLHTTPREQUEST_RESPONSE_BLOB = 2 -- 返回二进制大对象类型
cc.XMLHTTPREQUEST_RESPONSE_DOCUMENT = 3 -- 返回文档对象类型
cc.XMLHTTPREQUEST_RESPONSE_JSON = 4 -- 返回JSON数据类型
]]
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING --设置返回数据格式为字符串
local req = "http://123.56.50.222:8050/[email protected]&password=881122&phoneIdentity=1998273" --请求地址
xhr:open("GET", req) --设置请求方式 GET 或者 POST
local function onReadyStateChange() --请求响应函数
--[[
readyState : 请求五中状态
0 UNSENT (未打开) open()方法还未被调用.
1 OPENED (未发送) send()方法还未被调用.
2 HEADERS_RECEIVED (已获取响应头) send()方法已经被调用, 响应头和响应状态已经返回.
3 LOADING (正在下载响应体) 响应体下载中; responseText中已经获取了部分数据.
4 DONE (请求完成) 整个请求过程已经完毕.
status: 该请求的响应状态码 (例如, 状态码200 表示一个成功的请求).只读.
statusText: 该请求的响应状态信息,包含一个状态码和原因短语 (例如 "200 OK"). 只读.
]]
if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then --请求状态已完并且请求已成功
local statusString = "Http Status Code:"..xhr.statusText
print("请求返回状态码"..statusString)
local s = xhr.response --获得服务端返回的内容
dump(s)
print("****************************")
local str = json.decode(s)
for k,v in pairs(str) do
print(k,v)
end
end
end
xhr:registerScriptHandler(onReadyStateChange) --注册请求响应函数
xhr:send() --最后发送请求
end)
--登录按钮 (post)
self.DengLu_Btn = ccui.Button:create();
self.DengLu_Btn:setTitleText("play");
self.DengLu_Btn:setPosition(cc.p(display.cx,display.cy));
self:addChild(self.DengLu_Btn);
self.DengLu_Btn:addClickEventListener(function ( )
print("登录")
local xhr = cc.XMLHttpRequest:new() --创建一个请求
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING --设置返回数据格式为字符串
local req = "http://123.56.50.222:8050/userLogin"; --请求地址
local postData = "{email:[email protected],password:881122,phoneIdentity:1998273}";--post 传递的数据
xhr:open("POST", req) --设置请求方式 POST 或者 GET
local function onReadyStateChange() --请求响应函数
if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then --请求状态已完并且请求已成功
local statusString = "Http Status Code:"..xhr.statusText
print("请求返回状态码"..statusString)
local s = xhr.response --获得返回的内容
print("****************************")
local str = json.decode(s)
for k,v in pairs(str) do
print(k,v)
end
end
end
xhr:registerScriptHandler(onReadyStateChange) --注册请求响应函数
xhr:send(postData) --最后发送请求
end)
-- websocket 测试 (post)
-- self.wsSendText = cc.WebSocket:create("ws://127.0.0.1:3000");
-- local function wsSendTextOpen( strData )
-- print("Websocket 打开实例");
-- end
-- local function wsSendTextMessage( strData )
-- local info = "接收服务端数据 : " .. strData
-- print(info)
-- end
-- local function wsSendTextClose( strData )
-- print("Websocket 实例关闭");
-- end
-- local function wsSendTextError ( strData )
-- print("Websocket 发生错误")
-- end
-- self.wsSendText:registerScriptHandler(wsSendTextOpen,cc.WEBSOCKET_OPEN);
-- self.wsSendText:registerScriptHandler(wsSendTextMessage,cc.WEBSOCKET_MESSAGE);
-- self.wsSendText:registerScriptHandler(wsSendTextClose,cc.WEBSOCKET_CLOSE);
-- self.wsSendText:registerScriptHandler(wsSendTextError,cc.WEBSOCKET_ERROR);
-- self.webTest_Btn = ccui.Button:create("play.png");
-- self.webTest_Btn:setPosition(cc.p(display.cx,display.cy-100));
-- self:addChild(self.webTest_Btn);
-- self.webTest_Btn:addClickEventListener(function ( )
-- print("websocket test!");
-- if cc.WEBSOCKET_STATE_OPEN == self.wsSendText:getReadyState() then
-- print("send text ws is waiting")
-- self.wsSendText:sendString("Hello Websocket")
-- else
-- local warningStr = "Websocket 没有准备好!";
-- print(warningStr);
-- end
-- end)
end
return MainScene