我智商爆棚
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

423 lines
15 KiB

4 weeks ago
import NetConfig from "./NetConfig";
import User from "../User/User";
import AesTools from "./AesTools";
import AppConfig from "../Config/AppConfig";
import { LogUtils } from "../Util/LogUtils";
import AppPlatform from "../Util/AppPlatform";
export class requestData {
public meth_custom: string = "post";
public readonly data_custom: any;
public url_custom: string = "";
public onSuccess_custom: Function = null;
public onFail_custom: Function = null;
constructor() {
this.data_custom = {};
}
}
export default class HttpUnit {
/**
* Http
* @param req
* @param sendMsg
* @param completeFunc
* @param errorFunc
* @param headers
*/
public static sendHttpUrl_custom(req: requestData, sendMsg: string, completeFunc: Function, errorFunc: Function, headers?: any) {
let headersTab = headers || {}; //头数据
let xhr: XMLHttpRequest = new XMLHttpRequest();
//请求过程发生意外的回调
xhr.onerror = function (error) {
LogUtils.networkError_custom("网络请求异常" + error)
errorFunc("网络请求异常");
}
//超时
xhr.ontimeout = function (error) {
LogUtils.networkError_custom("网络超时" + error)
errorFunc("网络超时");
}
xhr.onreadystatechange = function () {
/*
0 UNSENT open()
1 OPENED open()
2 HEADERS_RECEIVED send()
3 LOADING responseText
4 DONE
*/
let readyState = xhr.readyState;
let status = xhr.status;
if (readyState === 4) {
if (status >= 200 && status < 300) {
let responseText = xhr.responseText;
// LogUtils.networkLog_custom("接收数据:----------------------")
// LogUtils.networkLog_custom("接收内容:" + responseText)
const response = JSON.parse(responseText);
completeFunc(response);
} else {
let statusText = xhr.statusText;
// LogUtils.networkError_custom("接收数据异常:----------------------status " + status)
// LogUtils.networkLog_custom("接收内容:" + statusText)
errorFunc(statusText);
}
}
}
xhr.open(req.meth_custom, req.url_custom, true);
if (headersTab) {
for (let key in headersTab) {
xhr.setRequestHeader(key, headersTab[key]);
}
}
// LogUtils.networkLog_custom("发送数据:----------------------")
// LogUtils.networkLog_custom(req.url_custom + " " + req.meth_custom)
// LogUtils.networkLog_custom(sendMsg);
// LogUtils.networkLog_custom(JSON.stringify(headers));
// LogUtils.networkLog_custom("----------------------")
xhr.send(sendMsg);
}
public static request_custom(req: requestData) {
if (req.url_custom.indexOf("https://") > -1 ||
req.url_custom.indexOf("http://") > -1) {
req.url_custom = req.url_custom;
} else {
// if (AppPlatform.is_BD_GAME_custom()) {//百度的用test域名
// req.url_custom = NetConfig.serverUrl_test_custom + req.url_custom;
// }
// // else if (AppPlatform.is_VIVO_GAME_custom() || AppPlatform.is_Android_custom()) {//vivo andorid 用php
// // req.url_custom = NetConfig.php_serverUrl_custom + req.url_custom;
// // }
// else {
req.url_custom = NetConfig.serverUrl_custom + req.url_custom;
// }
}
let completeFunc = (res) => {
LogUtils.networkLog_custom(res, "http Success")
if (req.onSuccess_custom) {
req.onSuccess_custom(res);
}
req.onSuccess_custom = null;
req = null;
};
let fail = req.onFail_custom;
let errorFunc = (res) => {
LogUtils.networkLog_custom(res, "http fail")
if (fail) {
fail(res);
}
req && (req.onFail_custom = null);
fail = null;
req = null;
};
//let dataStr: string = JSON.stringify(req.data);
// if (Laya.Browser.onMiniGame || AppConfig.onTTMiniGame) {
// req.data.code = User.code;
// }
// else if (Laya.Browser.onQGMiniGame) //OPPO小游戏
// {
// req.data.oppotoken = User.code;
// }
// else if (Laya.Browser.onQQMiniGame) //qq小游戏
// {
// req.data.code = User.code;
// }
// else {
if (AppPlatform.is_OPPO_GAME_custom()) {
req.data_custom.oppotoken = User.code_custom;
} else if (AppPlatform.is_Android_custom()) {
req.data_custom.sbh = User.code_custom;
}
req.data_custom.code = User.code_custom;
//}
//头文件
let time = "time=" + String(Date.now());
let headers = {};
//headers["Access-Control-Allow-Origin"] = "*";
headers["Content-Type"] = "application/json";
headers["state"] = AppConfig.state_custom;
headers["gameid"] = AppConfig.gameid_custom;
headers["sign"] = AesTools.encrypt_custom(time);
if (User.token_custom) {
headers["token"] = User.token_custom;
}
//发送数据
let sendMsg = null;
if (req.data_custom) {
sendMsg = JSON.stringify(req.data_custom)
}
this.sendHttpUrl_custom(req, sendMsg, completeFunc, errorFunc, headers);
}
//todo:这里添加你们和服务器相互的接口
public static getServerTime_custom(onSuccess: Function, onFail: Function) {
var req = new requestData();
req.url_custom = NetConfig.Get_ServerTime_custom;
req.onSuccess_custom = onSuccess;
req.onFail_custom = onFail;
HttpUnit.request_custom(req);
}
//todo:这里添加你们和服务器相互的接口
public static login_custom(onSuccess: Function, onFail: Function) {
var req = new requestData();
req.url_custom = NetConfig.Login_custom;
req.onSuccess_custom = onSuccess;
req.onFail_custom = onFail;
// if (AppPlatform.is_VIVO_GAME_custom()) {//vivo 用php
// req.url_custom = NetConfig.php_Login_custom;
// }
HttpUnit.request_custom(req);
}
public static saveGameData_custom(gameData: any, onSuccess: Function, onFail: Function) {
var req = new requestData();
req.url_custom = NetConfig.SaveGameData_custom;
// if (AppPlatform.is_VIVO_GAME_custom() || AppPlatform.is_Android_custom()) {//vivo andorid 用php
// req.url_custom = NetConfig.php_SaveGameData_custom;
// }
req.data_custom.gameData = gameData;
req.onSuccess_custom = onSuccess;
req.onFail_custom = onFail;
HttpUnit.request_custom(req);
}
public static getGameData_custom(onSuccess: Function, onFail: Function) {
var req = new requestData();
req.url_custom = NetConfig.GetUser_custom;
req.onSuccess_custom = onSuccess;
// if (AppPlatform.is_VIVO_GAME_custom() || AppPlatform.is_Android_custom()) {//vivo andorid 用php
// req.url_custom = NetConfig.php_GetUser_custom;
// let fucSuccess = (res) => {
// if (res.data && res.data.gamedata) {//对php的数据做加工
// let _cdata = res.data.gamedata;
// res.data = _cdata;
// }
// if (onSuccess) {
// onSuccess(res);
// }
// }
// req.onSuccess_custom = fucSuccess;
// }
req.onFail_custom = onFail;
HttpUnit.request_custom(req);
}
/**
* IP屏蔽方法NetConfig类中设置IpBlock的接口地址
* onSuccess方法返回参数的范例为 Object {code: 0, msg: "准一线", time: "1571034447", data: null}
* @static
* @memberof HttpUnit
*/
public static GetIpBlock_custom(onSuccess: Function, onFail: Function) {
if (-1 != AppConfig.gameid_custom) {
console.error("启动新版本的屏蔽系统")
let url = "https://wxxyx.renyouwangluo.cn/renyou_other_template/ipLogin"
let headersTab = {}; //头数据
let xhr: XMLHttpRequest = new XMLHttpRequest();
xhr.timeout = 15000;
//请求过程发生意外的回调
xhr.onerror = function (error) {
LogUtils.networkError_custom("网络请求异常" + error)
onFail("网络请求异常");
}
//超时
xhr.ontimeout = function (error) {
LogUtils.networkError_custom("网络超时" + error)
onFail("网络超时");
}
xhr.onreadystatechange = function () {
/*
0 UNSENT open()
1 OPENED open()
2 HEADERS_RECEIVED send()
3 LOADING responseText
4 DONE
*/
let readyState = xhr.readyState;
let status = xhr.status;
if (readyState === 4) {
let tab = { code: 1 }
if (status >= 200 && status < 300) {
let responseText = xhr.responseText;
LogUtils.networkLog_custom("接收数据:----------------------")
LogUtils.networkLog_custom("接收内容:" + responseText)
const response = JSON.parse(responseText);
if (response && response.isBlackIp == 0) {//没有屏蔽
tab.code = 0;
console.error("新版本的屏蔽系统 不屏蔽")
} else {
console.error("新版本的屏蔽系统 ", responseText)
}
onSuccess(tab);
} else {
let statusText = xhr.statusText;
LogUtils.networkError_custom("接收数据异常:----------------------status " + status)
LogUtils.networkLog_custom("接收内容:" + statusText)
onSuccess(tab);
}
}
}
xhr.open("POST", url, true);
if (!headersTab["Content-Type"]) {
headersTab["Content-Type"] = "application/json";
}
if (headersTab) {
for (let key in headersTab) {
xhr.setRequestHeader(key, headersTab[key]);
}
}
//1351
let params = { gameId: AppConfig.gameid_custom };
// let params = { gameId: 1351 };
let sendMsg = JSON.stringify(params);
xhr.send(sendMsg);
}
}
public static reportExport_custom(appid: string, game_name: string, onSuccess: Function, onFail: Function) {
var req = new requestData();
req.url_custom = NetConfig.reportExport_custom;
req.data_custom.wbappid = appid;
req.data_custom.game_name = game_name;
req.onSuccess_custom = onSuccess;
req.onFail_custom = onFail;
HttpUnit.request_custom(req);
}
public static reportImport_custom(appid: string, channel: string, onSuccess: Function, onFail: Function) {
var req = new requestData();
req.url_custom = NetConfig.reportImport_custom;
req.data_custom.wbappid = appid;
req.data_custom.channel = channel;
req.onSuccess_custom = onSuccess;
req.onFail_custom = onFail;
HttpUnit.request_custom(req);
}
public static Getuserip_custom(onSuccess: Function, onFail: Function) {
var req = new requestData();
req.url_custom = NetConfig.getuserip_custom;
// if (AppPlatform.is_VIVO_GAME_custom() || AppPlatform.is_Android_custom()) {//vivo andorid 用php
// req.url_custom = NetConfig.php_getuserip_custom;
// }
req.onSuccess_custom = onSuccess;
req.onFail_custom = onFail;
HttpUnit.request_custom(req);
}
//签到
public static SignIn_custom(onSuccess: Function, onFail: Function) {
var req = new requestData();
req.url_custom = NetConfig.signin_custom;
// if (AppPlatform.is_VIVO_GAME_custom() || AppPlatform.is_Android_custom()) {//vivo andorid 用php
// req.url_custom = NetConfig.php_signin_custom;
// }
req.onSuccess_custom = onSuccess;
req.onFail_custom = onFail;
req.data_custom.type = 1;
HttpUnit.request_custom(req);
}
//获取签到状态
public static GetSignIn_custom(onSuccess: Function, onFail: Function) {
var req = new requestData();
req.url_custom = NetConfig.signin_custom;
// if (AppPlatform.is_VIVO_GAME_custom() || AppPlatform.is_Android_custom()) {//vivo andorid 用php
// req.url_custom = NetConfig.php_signin_custom;
// }
req.onSuccess_custom = onSuccess;
req.onFail_custom = onFail;
req.data_custom.type = 0;
HttpUnit.request_custom(req);
}
//抖音上报渠道参数
public static reportTTLaunchChannel_custom(ak: string, cd: string, bid: string, onSuccess: Function, onFail: Function) {
var req = new requestData();
req.url_custom = NetConfig.ttReportLaunchChannel_custom;
req.onSuccess_custom = onSuccess;
req.onFail_custom = onFail;
req.data_custom.ak = ak;
req.data_custom.bid = bid;
req.data_custom.cd = cd;
HttpUnit.request_custom(req);
}
/**
*
* @param data
* @param onSuccess
* @param onFail
*/
public static userScanCode_custom(data: any, onSuccess?: Function, onFail?: Function) {
var req = new requestData();
req.url_custom = NetConfig.userScanCode_custom;
req.onSuccess_custom = onSuccess;
req.onFail_custom = onFail;
req.data_custom.code = data.code;
req.data_custom.state = data.state;
// req.data_custom.gameId = data.gameId;
req.data_custom.type = data.type;
req.data_custom.scan = data.scan;
HttpUnit.request_custom(req);
}
}