using Crosstales.Common.Util; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections; using System.Collections.Generic; using System.Text; using Unity.VisualScripting; using UnityEngine; using UnityEngine.Networking; using WpfApp1.Util; /// /// 接口管理 /// public static class InterfaceManager { private static string _token; public static string Token { get => "Bearer " + _token; set { _token = value; } } /// /// 版本号 /// public static string Version => Application.version; private static int success_code = 200; #region 接口地址 /// /// 当前选中的任务Id /// /// public static CourseTaskItem.CourseTaskItemData _currentchoosetaskid=new CourseTaskItem.CourseTaskItemData(); /// /// IP地址 /// public static string IdAddress; #endregion #region Get /// /// 加载数据(无头) /// /// /// /// public static IEnumerator Get(string _url,bool isAES,Action _callback = null) { using (UnityWebRequest __request = new UnityWebRequest(_url, UnityWebRequest.kHttpVerbGET)) { DownloadHandler downloadHandler = new DownloadHandlerBuffer(); __request.downloadHandler = downloadHandler; yield return __request.SendWebRequest(); if (__request.result == UnityWebRequest.Result.Success) { if (CallForTest.instance.is加密) { //系统开启加密 if (isAES) { //解密 string back = AESHelper.AesDecrypt(__request.downloadHandler.text.Trim('"'), CallForTest.instance.AesKey); _callback?.Invoke(back); } else { //不解密 _callback?.Invoke(__request.downloadHandler.text); } } else { //系统没开加密 _callback?.Invoke(__request.downloadHandler.text); } } else { Debug.Log(__request.error); } } } /// /// 有头 /// /// /// /// public static IEnumerator Get(string _url, Action _callback = null) { using (UnityWebRequest __request = new UnityWebRequest(_url, UnityWebRequest.kHttpVerbGET)) { DownloadHandler downloadHandler = new DownloadHandlerBuffer(); __request.downloadHandler = downloadHandler; __request.SetRequestHeader("Authorization", Token); //Debug.Log(Token); yield return __request.SendWebRequest(); if (__request.result == UnityWebRequest.Result.Success) { string back; if (CallForTest.instance.is加密) { //系统开启加密 back = AESHelper.AesDecrypt(__request.downloadHandler.text.Trim('"'), CallForTest.instance.AesKey); } else { //没开加密 back = __request.downloadHandler.text; } JObject _jo = JObject.Parse(back); if (_jo["code"].ToObject() == success_code) _callback?.Invoke(true, back); else _callback?.Invoke(false, "错误码:" + _jo["code"].ToObject()); } else { Debug.LogError(__request.error+" "+_url); _callback?.Invoke(false, __request.error); } } } #endregion /// /// 下载文件 /// /// /// /// public static IEnumerator GetData(string _url, ConsoleItem consoleItem=null, Action _callback = null) { using (UnityWebRequest __request = new UnityWebRequest(_url, UnityWebRequest.kHttpVerbGET)) { DownloadHandler downloadHandler = new DownloadHandlerBuffer(); __request.downloadHandler = downloadHandler; __request.SetRequestHeader("Authorization", Token); if (consoleItem != null) MainCanvasManager.Instance.Set_DownLoad_Process(consoleItem, __request); yield return __request.SendWebRequest(); if (consoleItem != null) MainCanvasManager.Instance.Remove_DownLoad_Process(); if (__request.result == UnityWebRequest.Result.Success) { _callback(true,__request.downloadHandler.data); } else { Debug.LogError(__request.error); _callback?.Invoke(false,null); } } } #region Post /// /// 登录不需要token,不加密 /// /// /// /// /// public static IEnumerator Post(string _url, string _jsondata, Action _callback = null) { using (UnityWebRequest __request = new UnityWebRequest(_url, UnityWebRequest.kHttpVerbPOST)) { string sendJson; sendJson = _jsondata; byte[] __databyte = Encoding.UTF8.GetBytes(sendJson); __request.uploadHandler = new UploadHandlerRaw(__databyte); __request.downloadHandler = new DownloadHandlerBuffer(); __request.SetRequestHeader("Content-Type", "application/json"); yield return __request.SendWebRequest(); if (__request.result == UnityWebRequest.Result.Success) { string back; //系统没开加密 back = __request.downloadHandler.text; JObject _jo = JObject.Parse(back); if (_jo["code"].ToObject() == success_code) _callback?.Invoke(true, back); else _callback?.Invoke(false, "错误码:" + _jo["code"].ToObject()); } else { Debug.LogError(__request.error); _callback?.Invoke(false, __request.error); } } } #endregion /// /// 加载图片精灵 /// /// /// /// public static IEnumerator GetSprite(string _url, Action _callback = null) { using (UnityWebRequest request = UnityWebRequestTexture.GetTexture(_url)) { yield return request.SendWebRequest(); if (request.result != UnityWebRequest.Result.Success) { Debug.LogError("加载失败: " + request.error+" "+ _url); yield break; } Texture2D texture = DownloadHandlerTexture.GetContent(request); Rect rect = new Rect(0, 0, texture.width, texture.height); Sprite sprite = Sprite.Create(texture, rect, Vector2.one * 0.5f); _callback?.Invoke(sprite); } } }