美文网首页cocos2d-Lua
XMLHttpRequest的Lua应用

XMLHttpRequest的Lua应用

作者: 最怕认真 | 来源:发表于2016-12-26 17:43 被阅读1402次

    这是一个http请求类,基本的功能已经帮我封装好了。对于http来说,网上有很多的讲解,我们知道http是建立在socket之上的应用,规定了请求相应格式,根据这个格式来作业的。对于cocos2dx 中的XMLHttpRequest来说,我们首先看下基本的使用方法

    local xhr = cc.XMLHttpRequest:new()
        xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON
        xhr:open("POST", url)
        xhr:setRequestHeader("Content-Type", "application/json")
    
        print("xhr.readyState", xhr.readyState)
    
        local function onReadyStateChange()
            -- if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then
            print("xhr.readyState", xhr.readyState)
            print("xhr.status", xhr.status)
            print("xhr.statusText", xhr.statusText)
            print("xhr.responseText", xhr.responseText)
            local list = json.decode(xhr.responseText)
            dump(list)
            print("xhr.response", xhr.response)
            print()
        end
    
    
        xhr:registerScriptHandler(onReadyStateChange)
        local par = {name = "123"}
        xhr:send(json.encode(par))
    
        --xhr:send("{\"name\":\"test\"}")
    
        print("waiting...")
    
    • open方法
      open(请求类型get|post,url请求地址)

    • setRequestHeader(key,value)往头部写入键值对

    • send(内容)写入具体的内容

    • registerScriptHandler(callback)注册一个回调函数,当消息相应后发生调用

    在onReadyStateChange中打印的是相应的各项数据

    特别注意

    这个类有一个BUG

    lua_xml_http_request.cpp 
    
    void LuaMinXmlHttpRequest::_sendRequest()
    
     if (statusCode == 200)
            {
                //Succeeded
                _status = 200;
                _readyState = DONE;
                _data.assign(buffer->begin(), buffer->end());
                _dataSize = buffer->size();
            }
            else
            {
                _status = 0;
            }
    

    这段代码的statusCode == 200需要改动,我们知道返回状态码如果是200-300都是正确的,这里==的话会导致有些返回报错,所以把这局改成

    if(statusCode >= 200 && statusCode  <= 300)
    

    相关文章

      网友评论

        本文标题:XMLHttpRequest的Lua应用

        本文链接:https://www.haomeiwen.com/subject/srnjvttx.html