HttpRequest.lua 2.25 KB
--[[
    Http请求
]]

HttpRequest = class("HttpRequest")

function HttpRequest:getInstance()
    if not HttpRequest._instance then
        HttpRequest._instance = HttpRequest.new()
    end
    return HttpRequest._instance
end

function HttpRequest:post(url, params, success_callback, error_callback,response_type)
    self:handleResponse("POST",url, params, success_callback, error_callback,response_type);
end

function HttpRequest:get(url, params, success_callback, error_callback,response_type)
    self:handleResponse("GET",url, params, success_callback, error_callback,response_type);
end

function HttpRequest:handleResponse(type,url, params,success_callback, error_callback,response_type)
    local xhr = cc.XMLHttpRequest:new();
    xhr.responseType = response_type or cc.XMLHTTPREQUEST_RESPONSE_JSON;
    xhr:open(type, url);
    print("HttpRequest:"..url);
    xhr:setRequestHeader("Content-Type","application/json");
--    xhr:setRequestHeader("Content-Type","application/x-www-form-urlencoded");

--    local Authorization = "CtUserAuth AccessToken="..self.Accesstoken.."&UserID="..self.userPlugin:getUserID().."&AppID=1880671";
--    xhr:setRequestHeader("Authorization",Authorization)    -- 提交的参数 

    local function onReadyStateChange()
        if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then
            print("HttpRequest RESPONSE:"..xhr.response);
            if success_callback then
                success_callback(xhr.response);
            end
            xhr:unregisterScriptHandler();
        else
            if error_callback then
                error_callback();
            end
            print("xhr.readyState is:", xhr.readyState, "xhr.status is: ",xhr.status);
        end
--        xhr:release();
    end
    xhr:registerScriptHandler(onReadyStateChange);
    if params and not TableUtil.isEmpty(params) then
        paramsStr = json.encode(params);
        print("HttpRequest PARAMS:"..paramsStr);
        xhr:send(paramsStr);
    else
        xhr:send();
    end
end

function HttpRequest:getParamsStr(params)
    local paramsStr = "";
    for i,v in pairs(params) do
        paramsStr = paramsStr..i.."="..v.."&";
    end
    paramsStr = string.sub(paramsStr,1,string.len(paramsStr)-1);
    return paramsStr;
end

return HttpRequest