cocos2d-x lua 使用http(下载图片,POST JSON)
version: cocos2d-x 3.6
1.使用http post json与服务器交互
- require("src/cocos/cocos2d/json")
- require("src/cocos/network/NetworkConstants")
-
- -- post json
- local xhr = cc.XMLHttpRequest:new()
- xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON
- xhr:setRequestHeader("Content-Type","application/json")
- xhr:open("POST","www.baidu.com")
- local function loginCallback()
- print("xhr.readyState is:",xhr.readyState,"xhr.status is: ",xhr.status)
- if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then
- local response = xhr.response
- local output = json.decode(response)
- -- print
- table.foreach(output,function(i,v) print (i,v) end)
-
- -- success ...
- else
- -- fail ...
- end
- end
- xhr:registerScriptHandler(loginCallback)
- xhr:send(sendJson)@H_403_86@
-
-
2.使用http get下载网络图片
-
-- get (image)
pSprite:retain() -- a sprite
local xhr = cc.XMLHttpRequest:new()
-- tag
xhr._urlFileName = urlFileName
xhr._urlSprite = pSprite
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING
xhr:open("GET","http://cocos2d-x.org/s/images/img-cocos2dx.jpg")
local function onDownloadImage()
print("xhr.readyState is:",xhr.status)
if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then
local fileData = xhr.response
local fullFileName = cc.FileUtils:getInstance():getWritablePath() .. "/" .. xhr._urlFileName
local file = io.open(fullFileName,"wb")
file:write(fileData)
file:close()
local texture2d = cc.Director:getInstance():getTextureCache():addImage(fullFileName)
local pSprite = xhr._urlSprite
if texture2d then
pSprite:setTexture(texture2d)
end
pSprite:release() -- be careful
end
end
xhr:registerScriptHandler(onDownloadImage)
xhr:send()@H_403_86@