HttpManager.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. export default class HttpManager {
  2. static singleInstance: HttpManager = null;
  3. static getInstance(): HttpManager {
  4. if (HttpManager.singleInstance == null) {
  5. HttpManager.singleInstance = new HttpManager();
  6. }
  7. return HttpManager.singleInstance;
  8. }
  9. get(url, path, params, callback) {
  10. var xhr = cc.loader.getXMLHttpRequest();
  11. xhr.timeout = 5000;
  12. var requestURL = url + path;
  13. if (params) {
  14. requestURL = requestURL + "?" + params;
  15. }
  16. xhr.open("GET",requestURL, true);
  17. if (cc.sys.isNative){
  18. xhr.setRequestHeader("Accept", "text/html");
  19. xhr.setRequestHeader("Accept-Charset", "utf-8");
  20. xhr.setRequestHeader("Accept-Encoding", "gzip,deflate");
  21. }
  22. xhr.onreadystatechange = function() {
  23. if(xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)){
  24. console.log("http res("+ xhr.responseText.length + "):" + xhr.responseText);
  25. try {
  26. var ret = xhr.responseText;
  27. if(callback !== null){
  28. callback(null, ret);
  29. }
  30. return;
  31. } catch (e) {
  32. callback(e, null);
  33. }
  34. }
  35. else {
  36. callback(xhr.readyState + ":" + xhr.status, null);
  37. }
  38. };
  39. xhr.send();
  40. return xhr;
  41. }
  42. post(url, path, params, body, callback) {
  43. var xhr = cc.loader.getXMLHttpRequest();
  44. xhr.timeout = 5000;
  45. var requestURL = url + path;
  46. if (params) {
  47. requestURL = requestURL + "?" + params;
  48. }
  49. xhr.open("POST",requestURL, true);
  50. if (cc.sys.isNative){
  51. xhr.setRequestHeader("Accept", "text/html");
  52. xhr.setRequestHeader("Accept-Charset", "utf-8");
  53. xhr.setRequestHeader("Accept-Encoding", "gzip,deflate");
  54. }
  55. if (body) {
  56. xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  57. }
  58. xhr.onreadystatechange = function() {
  59. if(xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)){
  60. try {
  61. var ret = xhr.responseText;
  62. if(callback !== null){
  63. callback(null, ret);
  64. }
  65. return;
  66. } catch (e) {
  67. callback(e, null);
  68. }
  69. }
  70. else {
  71. callback(xhr.readyState + ":" + xhr.status, null);
  72. }
  73. };
  74. if (body) {
  75. xhr.send(body);
  76. }
  77. return xhr;
  78. }
  79. download(url, path, params, callback) {
  80. var xhr = cc.loader.getXMLHttpRequest();
  81. xhr.timeout = 5000;
  82. var requestURL = url + path;
  83. if (params) {
  84. requestURL = requestURL + "?" + params;
  85. }
  86. xhr.responseType = "arraybuffer";
  87. xhr.open("GET",requestURL, true);
  88. if (cc.sys.isNative){
  89. xhr.setRequestHeader("Accept", "text/html");
  90. xhr.setRequestHeader("Accept-Charset", "utf-8");
  91. xhr.setRequestHeader("Accept-Encoding", "gzip,deflate");
  92. }
  93. xhr.onreadystatechange = function() {
  94. if(xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)){
  95. var buffer = xhr.response;
  96. var dataview = new DataView(buffer);
  97. var ints = new Uint8Array(buffer.byteLength);
  98. for (var i = 0; i < ints.length; i++) {
  99. ints[i] = dataview.getUint8(i);
  100. }
  101. callback(null, ints);
  102. }
  103. else {
  104. callback(xhr.readyState + ":" + xhr.status, null);
  105. }
  106. };
  107. xhr.send();
  108. return xhr;
  109. }
  110. }