using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.Networking; using System.Text; using Newtonsoft.Json; using System.Collections.Generic; using Newtonsoft.Json.Linq; /// /// 异步封装unityWebRequest请求 /// public static class AsyncWebReq { public static async UniTask Get(string endpoint) { var getRequest = CreateRequest(endpoint); await getRequest.SendWebRequest(); #if UNITY_EDITOR Debug.Log("async req : " + getRequest.downloadHandler.text); #endif T result = JsonUtility.FromJson(getRequest.downloadHandler.text); getRequest.Dispose(); return result; } public static void SetValue(string jsonStr, out JObject _jbsx, out JObject _jsxx, out List _jlzzxx) { var json = JsonConvert.DeserializeObject>(jsonStr); var data = json["datas"] as JObject; var jbsxArr = data["jbsx"] as JArray; var jbsx = jbsxArr[0] as JObject; _jbsx = jbsx; //foreach (var kv in jbsx) //{ // Debug.Log(kv.Key + ":" + kv.Value); //} var jbxxArr = data["jbxx"] as JArray; var jbxx = jbxxArr[0] as JObject; _jsxx = jbxx; //foreach (var kv in jbxx) //{ // Debug.Log(kv.Key + ":" + kv.Value); //} _jlzzxx = new List(); var jlzzxxArr = data["jlzzxx"] as JArray; for (int i = 0; i < jlzzxxArr.Count; i++) { var jlzzxx = jlzzxxArr[i] as JObject; _jlzzxx.Add(jlzzxx); } //foreach (var kv in jlzzxx) //{ // Debug.Log(kv.Key + ":" + kv.Value); //} } public static async UniTask Post(string endpoint, object payload) { var postRequest = CreateRequest(endpoint, RequestType.POST, payload); await postRequest.SendWebRequest(); #if UNITY_EDITOR Debug.Log("async req : " + postRequest.downloadHandler.text); Debug.Log("endpoint : " + endpoint); #endif T result = JsonUtility.FromJson(postRequest.downloadHandler.text); postRequest.Dispose(); return result; } private static UnityWebRequest CreateRequest(string path, RequestType type = RequestType.GET, object data = null) { var request = new UnityWebRequest(path, type.ToString()); if (data != null) { string reqJson = JsonConvert.SerializeObject(data); #if UNITY_EDITOR Debug.Log($"async req json : {reqJson}"); #endif var bodyRaw = Encoding.UTF8.GetBytes(reqJson); request.uploadHandler = new UploadHandlerRaw(bodyRaw); } request.downloadHandler = new DownloadHandlerBuffer(); request.SetRequestHeader("Content-Type", "application/json"); return request; } private static void AttachHeader(UnityWebRequest request, string key, string value) { request.SetRequestHeader(key, value); } private static string ObjectToStringTwo(Object obj) { string str = JsonConvert.SerializeObject(obj); return str; } private static T StringToObjectTwo(string str) { T obj = JsonConvert.DeserializeObject(str); return obj; } /// /// 请求类型 /// public enum RequestType { GET = 0, POST = 1 } }