using System.Collections.Generic; using UnityEngine; using BF; using System; using System.Text; using BestHTTP; namespace BF { public class BIReport : ManagerBase { Uri Uri; #region override static BIReport instance; public static BIReport Create() { BFLog.LogAssert(instance == null, "This method only allows BFMain to call once"); instance = new BIReport(); return instance; } BIReport() { } public override void Init() { base.Init(); } public override void Destroy() { base.Destroy(); instance = null; } public override void Update() { base.Update(); } public override void LateUpdate() { base.LateUpdate(); } public override void SetMono(MonoBehaviour mono) { base.SetMono(mono); } #endregion /// /// 设置一个默认URI /// public void SetUri(string uri) { Uri = new Uri(uri); } public bool HasUri() { if (Uri == null) { return false; } return true; } public void Post(string data, long offset, Action callback) { if (Uri == null) { return; } var time = DateTimeOffset.UtcNow.ToUnixTimeSeconds() + offset; var date = time.ToString(); var httpRequest = new HTTPRequest(Uri, HTTPMethods.Post, (req, httpResponse) => { if (httpResponse != null && httpResponse.IsSuccess == true) { BFLog.Log("BI report get response, response status is " + httpResponse.StatusCode); } else { BFLog.Log("BI report no response"); } callback?.Invoke(req, httpResponse); }); // var authorization = Md5Encrypt.Encrypt("fbiubi9gewaga=niu1n3091mlnoahgawng" + date); // httpRequest.SetHeader("Authorization", authorization); httpRequest.SetHeader("Date", date); httpRequest.SetHeader("Content-Type", "application/x-www-form-urlencoded"); httpRequest.RawData = Encoding.UTF8.GetBytes(data); httpRequest.Send(); } public void PostWithURL(string url, string data, Action callback) { var httpRequest = new HTTPRequest(new Uri(url), HTTPMethods.Post, (req, httpResponse) => { callback?.Invoke(req, httpResponse); }); httpRequest.SetHeader("Content-Type", "application/x-www-form-urlencoded"); httpRequest.RawData = Encoding.UTF8.GetBytes(data); httpRequest.Send(); } public void SendRequest(string url, string data, Action callback) { var httpRequest = new HTTPRequest(new Uri(url), HTTPMethods.Get, (req, httpResponse) => { callback?.Invoke(req, httpResponse); }); httpRequest.SetHeader("Content-Type", "application/x-www-form-urlencoded"); httpRequest.RawData = Encoding.UTF8.GetBytes(data); httpRequest.Send(); } } }