using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Net; using System.Text; using UnityEngine; using UnityEngine.Networking; using Newtonsoft.Json; namespace FancyUnity { public class NetMgr : Singleton where T : Component { public void Get(string url, Action callback) => StartCoroutine(GetRequest(url, callback)); public IEnumerator GetRequest(string url, Action callback) { using (var webRequest = UnityWebRequest.Get(url)) { var req = webRequest.SendWebRequest(); yield return req; // 出现网络错误 if (webRequest.result != UnityWebRequest.Result.Success) { Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text); } else// 正常处理 { // 获取到的数据 string strData = webRequest.downloadHandler.text; var respData = JsonConvert.DeserializeObject(strData); callback?.Invoke(respData); } } } public void Post(string url, TReqData postData, Action callback) => StartCoroutine(PostRequest(url, postData, callback)); public IEnumerator PostRequest( string url, TReqData postData, Action callback) { var jsonData = JsonConvert.SerializeObject(postData); var form = new Dictionary(); form.Add("Data", jsonData); using (var webRequest = UnityWebRequest.Post(url, form)) { var req = webRequest.SendWebRequest(); yield return req; // 出现网络错误 if (webRequest.result != UnityWebRequest.Result.Success) { Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text); } else// 正常处理 { // 获取到的数据 string strData = webRequest.downloadHandler.text; var respData = JsonConvert.DeserializeObject(strData); callback?.Invoke(respData); } } } public void UploadFile( string url, string fileName, Action callback, string token = null) where TResp : class { StartCoroutine(doUploadFile(url,fileName,callback,token)); } public IEnumerator doUploadFile( string url, string fileName, Action callback, string token = null) where TResp:class { var form = new WWWForm(); form.AddField("token",token); form.AddBinaryData("File", File.ReadAllBytes("fileName")); using (var webRequest = UnityWebRequest.Post(url, form)) { var req = webRequest.SendWebRequest(); yield return req; // 出现网络错误 if (webRequest.result != UnityWebRequest.Result.Success) { Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text); } else// 正常处理 { // 获取到的数据 string strData = webRequest.downloadHandler.text; callback?.Invoke(JsonConvert.DeserializeObject(strData)); } } /* var client = new WebClient(); client.QueryString.Add("token", token); var byteResp = client.UploadFile(url, fileName); return Encoding.UTF8.GetString(byteResp); */ } } }