import { sys, _decorator } from 'cc'; export class WebRequest { private _callBack: Function = null; private contentType="" public setContentType(str="application/x-www-form-urlencoded"){ this.contentType=str } public getData(url: string, data: any, callback: Function, post: boolean) { this._callBack = callback; var self = this; var xhr = new XMLHttpRequest() //loader.getXMLHttpRequest(); // Simple events let arr=['loadstart', 'abort', 'error', 'load', 'loadend', 'timeout'] arr.forEach(function (eventname) { xhr["on" + eventname] = function () { //log("WebRequest.getData event = " + eventname); if (eventname == 'abort' || eventname == 'error' || eventname == 'timeout') { if (self._callBack != null) { self._callBack(false, ""); } } }; }); // Special event xhr.onreadystatechange = function () { //log("onreadystatechange code = " + xhr.readyState + ",status = " + xhr.status); if (xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)) { if (self._callBack != null) { // var XmlToJson = require('XmlToJson'); // var xmlToJson = new XmlToJson(); // var jsonData = JSON.stringify(xmlToJson.parse(xhr.responseText)); self._callBack(true, xhr.response); } } }; xhr.timeout = 5000;//5 seconds for timeout if (post == null || post == false) { if (data == "" || data == null) { xhr.open("GET", url, true); } else { xhr.open("GET", url + "?" + data, true); } if (sys.isNative) { xhr.setRequestHeader("Accept-Encoding", "gzip,deflate"); } xhr.send(); } else { //log("open url = " + url + ",data = "+ data); xhr.open("POST", url, true); //set Content-type "text/plain" to post ArrayBuffer or ArrayBufferView // xhr.setRequestHeader("Content-Type","text/plain"); if(this.contentType){ xhr.setRequestHeader("Content-Type", this.contentType); } // Uint8Array is an ArrayBufferView //xhr.send(new Uint8Array([1,2,3,4,5])); xhr.send(data); } } }