Files
slgclient/assets/scripts/network/http/HttpInvoke.ts
2025-11-18 18:38:53 +08:00

81 lines
2.1 KiB
TypeScript

import { _decorator } from 'cc';
import { NetEvent } from "../socket/NetInterface";
import { EventMgr } from '../../utils/EventMgr';
export enum HttpInvokeType {
GET,
POST
}
export class HttpInvoke {
protected _receiveTime: number = 15000; // 多久没收到数据断开
protected _name:string = "";
protected _otherData:any = null;
public init(name:string,_otherData:any = null):void{
this._name = name;
this._otherData = _otherData;
}
private onComplete(data:any):void{
var json = {};
if(data){
try {
json = JSON.parse(data.responseText);
} catch (e) {
console.log("onComplete--e:",e)
}
}
EventMgr.emit(this._name, json,this._otherData);
EventMgr.emit(NetEvent.ServerRequestSucess,json);
}
public doSend(url:string,params:any,type:HttpInvokeType):void{
var self = this;
let xhr = new XMLHttpRequest();
xhr.timeout = this._receiveTime;
console.log("doSend:",url,params,type)
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
console.log("onreadystatechange:",xhr.responseText);
if (xhr.status >= 200 && xhr.status < 400) {
self.onComplete(xhr);
} else {
self.onComplete(null);
}
}
};
xhr.ontimeout = function () {
console.log("xhr.ontimeout");
self.onComplete(null);
};
xhr.onerror = function (e) {
console.log("xhr.onerror:", xhr.readyState, xhr.status, e);
self.onComplete(null);
};
if(type == HttpInvokeType.GET){
url +="?"+ params;
xhr.open("GET",url , true);
xhr.send();
}else if(type == HttpInvokeType.POST){
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
xhr.send(params);
}
}
}