From a10df85379cd91bd73e5a117a9b2ceaf3004e8a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=93=AE?= <834207172@qq.com> Date: Thu, 12 Jun 2025 14:20:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0web=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Runtime/Utility/WebRequestSystem.cs | 286 ++++++++++-------- Assets/00.StaryEvo/package.json | 2 +- 2 files changed, 158 insertions(+), 130 deletions(-) diff --git a/Assets/00.StaryEvo/Runtime/Utility/WebRequestSystem.cs b/Assets/00.StaryEvo/Runtime/Utility/WebRequestSystem.cs index 73b8b8b..3519549 100644 --- a/Assets/00.StaryEvo/Runtime/Utility/WebRequestSystem.cs +++ b/Assets/00.StaryEvo/Runtime/Utility/WebRequestSystem.cs @@ -22,15 +22,15 @@ namespace Stary.Evo roleType = "client", }; string postData = JsonConvert.SerializeObject(data); - using (UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, postData)) //第二种写法此行注释 + try { + using UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, postData); byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData); webRequest.uploadHandler = new UploadHandlerRaw(postBytes); webRequest.SetRequestHeader("Content-Type", "application/json"); + webRequest.timeout = 10; await webRequest.SendWebRequest(); - Debug.Log("登陆返回"); webRequest.uploadHandler?.Dispose(); - Debug.Log("卸载uploadHandler"); // 更新错误检查方式 if (webRequest.result == UnityWebRequest.Result.ConnectionError || webRequest.result == UnityWebRequest.Result.ProtocolError) @@ -39,27 +39,28 @@ namespace Stary.Evo } else { - Debug.Log("卸载uploadHandler1"); ResultMessageEntity authResponse = JsonConvert.DeserializeObject(webRequest.downloadHandler.text); - Debug.Log("卸载uploadHandler2"+authResponse.data); + Debug.Log("UnityEvo:ResultMessageEntity" + authResponse.data); if (authResponse.code == 200) { - Debug.Log("卸载uploadHandler3"); AuthenticationResponse authResponseData = JsonConvert.DeserializeObject(authResponse.data.ToString()); - Debug.Log("卸载uploadHandler4"+authResponseData.Token); + Debug.Log("UnityEvo:AuthenticationResponse" + authResponseData.Token); authorization = authResponseData.Token; - Debug.Log("卸载uploadHandler5"); PlayerPrefs.SetString("Authorization", authorization); - Debug.Log("卸载uploadHandler6"); - Debug.Log("登录成功"); + Debug.Log("UnityEvo:登录成功"); return true; } } return false; } + catch (Exception e) + { + Debug.LogError($"UnityEvo:WebRequestSystem.Login" + e.Message); + return false; + } } /// @@ -73,38 +74,35 @@ namespace Stary.Evo authorization = PlayerPrefs.GetString("Authorization"); try { - using (UnityWebRequest webRequest = UnityWebRequest.Get($"{url}?token={authorization}")) + using UnityWebRequest webRequest = UnityWebRequest.Get($"{url}?token={authorization}"); + webRequest.downloadHandler = new DownloadHandlerBuffer(); + webRequest.timeout = 10; + await webRequest.SendWebRequest(); + // 增强错误处理 + if (webRequest.result != UnityWebRequest.Result.Success) { - webRequest.downloadHandler = new DownloadHandlerBuffer(); - await webRequest.SendWebRequest(); + var errorMsg = $"HTTP {webRequest.responseCode}\n" + + $"URL: {url}\n" + + $"Error: {webRequest.error}\n" + + $"Response: {webRequest.downloadHandler.text}"; - // 增强错误处理 - if (webRequest.result != UnityWebRequest.Result.Success) - { - var errorMsg = $"HTTP {webRequest.responseCode}\n" + - $"URL: {url}\n" + - $"Error: {webRequest.error}\n" + - $"Response: {webRequest.downloadHandler.text}"; - - Debug.LogError(errorMsg); - return false; - } - - ResultMessageEntity resultMessageEntity = - JsonConvert.DeserializeObject(webRequest.downloadHandler.text); - if (resultMessageEntity.code == 200) - return true; // 添加返回值 - else - - return false; + Debug.LogError(errorMsg); + return false; } + + ResultMessageEntity resultMessageEntity = + JsonConvert.DeserializeObject(webRequest.downloadHandler.text); + if (resultMessageEntity.code == 200) + return true; // 添加返回值 + + + return false; } catch (Exception e) { - Debug.LogError(e); + Debug.LogError($"UnityEvo:WebRequestSystem.GetValidateToken" + e.Message); + return false; } - - return false; } /// @@ -124,6 +122,7 @@ namespace Stary.Evo message = "用户未登录,请先登录" }; } + //UnityWebRequest[] files = new UnityWebRequest[3]; WWWForm form = new WWWForm(); @@ -132,12 +131,15 @@ namespace Stary.Evo byte[] bytes = await File.ReadAllBytesAsync(path[i]); form.AddBinaryData("files[]", bytes, Path.GetFileName(path[i])); } - using (UnityWebRequest webRequest = UnityWebRequest.Post(url, form)) + + try { + using UnityWebRequest webRequest = UnityWebRequest.Post(url, form); webRequest.SetRequestHeader("Authorization", authorization); webRequest.disposeUploadHandlerOnDispose = true; webRequest.disposeDownloadHandlerOnDispose = true; webRequest.disposeCertificateHandlerOnDispose = true; + webRequest.timeout = 60; await webRequest.SendWebRequest(); webRequest.uploadHandler?.Dispose(); // 更新错误检查方式 @@ -159,18 +161,29 @@ namespace Stary.Evo { Debug.LogError("上传异常,无文件数据返回!!"); } + return resultMessageEntity; } } + catch (Exception e) + { + Debug.LogError($"UnityEvo:WebRequestSystem.PostFile" + e.Message); + return new ResultMessageEntity() + { + code = 5001, + message = e.Message + }; + } } - /// + /// /// GET请求数据 /// /// 请求数据的URL地址 /// token验证的参数,此处为authorization /// - public static async Task GetFile(string url,string tempPath, Action downloadProgress = null) + public static async Task GetFile(string url, string tempPath, + Action downloadProgress = null) { if (!GetTokenState()) { @@ -184,54 +197,54 @@ namespace Stary.Evo try { - using (UnityWebRequest webRequest = UnityWebRequest.Get(url)) - { - webRequest.downloadHandler = new DownloadHandlerFile(tempPath); - if (authorization != null) - webRequest.SetRequestHeader("Authorization", authorization); // 修正请求头名称规范 - - - var operation= webRequest.SendWebRequest(); - while (!operation.isDone) - { - downloadProgress?.Invoke(webRequest.downloadProgress); - await UniTask.Yield(); - } - // 增强错误处理 - if (webRequest.result != UnityWebRequest.Result.Success) - { - var errorMsg = $"HTTP {webRequest.responseCode}\n" + - $"URL: {url}\n" + - $"Error: {webRequest.error}\n"; + using UnityWebRequest webRequest = UnityWebRequest.Get(url); + webRequest.downloadHandler = new DownloadHandlerFile(tempPath); + if (authorization != null) + webRequest.SetRequestHeader("Authorization", authorization); // 修正请求头名称规范 - Debug.LogError(errorMsg); - return new ResultMessageEntity() - { - code = 5001, - message = errorMsg - }; - } - else + + var operation = webRequest.SendWebRequest(); + while (!operation.isDone) + { + downloadProgress?.Invoke(webRequest.downloadProgress); + await UniTask.Yield(); + } + + // 增强错误处理 + if (webRequest.result != UnityWebRequest.Result.Success) + { + var errorMsg = $"HTTP {webRequest.responseCode}\n" + + $"URL: {url}\n" + + $"Error: {webRequest.error}\n"; + + Debug.LogError(errorMsg); + return new ResultMessageEntity() { - return new ResultMessageEntity() - { - code = 200, - message = "下载成功" - }; - } + code = 5001, + message = errorMsg + }; + } + else + { + return new ResultMessageEntity() + { + code = 200, + message = "下载成功" + }; } } catch (Exception e) { - Debug.LogError(e); + Debug.LogError($"UnityEvo:WebRequestSystem.GetFile" + e.Message); + return new ResultMessageEntity() { code = 5001, message = e.Message }; } - } + /// /// POST请求数据 /// @@ -250,39 +263,54 @@ namespace Stary.Evo }; } - using (UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, postData)) //第二种写法此行注释 + try { - byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData); - webRequest.uploadHandler = new UploadHandlerRaw(postBytes); - webRequest.SetRequestHeader("Content-Type", "application/json"); - webRequest.SetRequestHeader("Authorization", authorization); - webRequest.disposeUploadHandlerOnDispose = true; - webRequest.disposeDownloadHandlerOnDispose = true; - webRequest.disposeCertificateHandlerOnDispose = true; - await webRequest.SendWebRequest(); - webRequest.uploadHandler?.Dispose(); - // 更新错误检查方式 - if (webRequest.result == UnityWebRequest.Result.ConnectionError || - webRequest.result == UnityWebRequest.Result.ProtocolError) + using (UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, postData)) //第二种写法此行注释 { - Debug.LogError(webRequest.error); - return new ResultMessageEntity() + byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData); + webRequest.uploadHandler = new UploadHandlerRaw(postBytes); + webRequest.SetRequestHeader("Content-Type", "application/json"); + webRequest.SetRequestHeader("Authorization", authorization); + webRequest.disposeUploadHandlerOnDispose = true; + webRequest.disposeDownloadHandlerOnDispose = true; + webRequest.disposeCertificateHandlerOnDispose = true; + webRequest.timeout = 20; + await webRequest.SendWebRequest(); + webRequest.uploadHandler?.Dispose(); + // 更新错误检查方式 + if (webRequest.result == UnityWebRequest.Result.ConnectionError || + webRequest.result == UnityWebRequest.Result.ProtocolError) { - code = 5001, - message = webRequest.error - }; - } - else - { - ResultMessageEntity resultMessageEntity = - JsonConvert.DeserializeObject(webRequest.downloadHandler.text); - if (resultMessageEntity.code != 200) - { - Debug.LogError(resultMessageEntity.message); + Debug.LogError(webRequest.error); + return new ResultMessageEntity() + { + code = 5001, + message = webRequest.error + }; + } + else + { + ResultMessageEntity resultMessageEntity = + JsonConvert.DeserializeObject(webRequest.downloadHandler.text); + if (resultMessageEntity.code != 200) + { + Debug.LogError(resultMessageEntity.message); + } + + return resultMessageEntity; } - return resultMessageEntity; } } + catch (Exception e) + { + Debug.LogError($"UnityEvo:WebRequestSystem.Post" + e.Message); + + return new ResultMessageEntity() + { + code = 5001, + message = e.Message + }; + } } /// @@ -305,48 +333,48 @@ namespace Stary.Evo try { - using (UnityWebRequest webRequest = UnityWebRequest.Get(url)) + using UnityWebRequest webRequest = UnityWebRequest.Get(url); + webRequest.downloadHandler = new DownloadHandlerBuffer(); + if (authorization != null) + webRequest.SetRequestHeader("Authorization", authorization); // 修正请求头名称规范 + + webRequest.timeout = 20; + await webRequest.SendWebRequest(); + + // 增强错误处理 + if (webRequest.result != UnityWebRequest.Result.Success) { - webRequest.downloadHandler = new DownloadHandlerBuffer(); - if (authorization != null) - webRequest.SetRequestHeader("Authorization", authorization); // 修正请求头名称规范 + var errorMsg = $"HTTP {webRequest.responseCode}\n" + + $"URL: {url}\n" + + $"Error: {webRequest.error}\n" + + $"Response: {webRequest.downloadHandler.text}"; - await webRequest.SendWebRequest(); - - // 增强错误处理 - if (webRequest.result != UnityWebRequest.Result.Success) + Debug.LogError(errorMsg); + return new ResultMessageEntity() { - var errorMsg = $"HTTP {webRequest.responseCode}\n" + - $"URL: {url}\n" + - $"Error: {webRequest.error}\n" + - $"Response: {webRequest.downloadHandler.text}"; - - Debug.LogError(errorMsg); - return new ResultMessageEntity() - { - code = 5001, - message = errorMsg - }; - } - ResultMessageEntity resultMessageEntity = - JsonConvert.DeserializeObject(webRequest.downloadHandler.text); - if (resultMessageEntity.code != 200) - { - Debug.LogError(resultMessageEntity.message); - } - return resultMessageEntity; + code = 5001, + message = errorMsg + }; } + + ResultMessageEntity resultMessageEntity = + JsonConvert.DeserializeObject(webRequest.downloadHandler.text); + if (resultMessageEntity.code != 200) + { + Debug.LogError(resultMessageEntity.message); + } + + return resultMessageEntity; } catch (Exception e) { - Debug.LogError(e); + Debug.LogError($"UnityEvo:WebRequestSystem.Get" + e.Message); return new ResultMessageEntity() { code = 5001, message = e.Message }; } - } diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json index 0e8c4f3..3f5eeee 100644 --- a/Assets/00.StaryEvo/package.json +++ b/Assets/00.StaryEvo/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.main", - "version": "1.2.14", + "version": "1.2.15", "displayName": "00.StaryEvo", "description": "This is an Framework package(后台服务器版本,端口9527)", "unity": "2021.3",