增加web超时处理

This commit is contained in:
2025-06-12 14:20:37 +08:00
parent cc9a31a373
commit a10df85379
2 changed files with 158 additions and 130 deletions

View File

@@ -22,15 +22,15 @@ namespace Stary.Evo
roleType = "client", roleType = "client",
}; };
string postData = JsonConvert.SerializeObject(data); 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); byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData);
webRequest.uploadHandler = new UploadHandlerRaw(postBytes); webRequest.uploadHandler = new UploadHandlerRaw(postBytes);
webRequest.SetRequestHeader("Content-Type", "application/json"); webRequest.SetRequestHeader("Content-Type", "application/json");
webRequest.timeout = 10;
await webRequest.SendWebRequest(); await webRequest.SendWebRequest();
Debug.Log("登陆返回");
webRequest.uploadHandler?.Dispose(); webRequest.uploadHandler?.Dispose();
Debug.Log("卸载uploadHandler");
// 更新错误检查方式 // 更新错误检查方式
if (webRequest.result == UnityWebRequest.Result.ConnectionError || if (webRequest.result == UnityWebRequest.Result.ConnectionError ||
webRequest.result == UnityWebRequest.Result.ProtocolError) webRequest.result == UnityWebRequest.Result.ProtocolError)
@@ -39,27 +39,28 @@ namespace Stary.Evo
} }
else else
{ {
Debug.Log("卸载uploadHandler1");
ResultMessageEntity authResponse = ResultMessageEntity authResponse =
JsonConvert.DeserializeObject<ResultMessageEntity>(webRequest.downloadHandler.text); JsonConvert.DeserializeObject<ResultMessageEntity>(webRequest.downloadHandler.text);
Debug.Log("卸载uploadHandler2"+authResponse.data); Debug.Log("UnityEvo:ResultMessageEntity" + authResponse.data);
if (authResponse.code == 200) if (authResponse.code == 200)
{ {
Debug.Log("卸载uploadHandler3");
AuthenticationResponse authResponseData = AuthenticationResponse authResponseData =
JsonConvert.DeserializeObject<AuthenticationResponse>(authResponse.data.ToString()); JsonConvert.DeserializeObject<AuthenticationResponse>(authResponse.data.ToString());
Debug.Log("卸载uploadHandler4"+authResponseData.Token); Debug.Log("UnityEvo:AuthenticationResponse" + authResponseData.Token);
authorization = authResponseData.Token; authorization = authResponseData.Token;
Debug.Log("卸载uploadHandler5");
PlayerPrefs.SetString("Authorization", authorization); PlayerPrefs.SetString("Authorization", authorization);
Debug.Log("卸载uploadHandler6"); Debug.Log("UnityEvo:登录成功");
Debug.Log("登录成功");
return true; return true;
} }
} }
return false; return false;
} }
catch (Exception e)
{
Debug.LogError($"UnityEvo:WebRequestSystem.Login" + e.Message);
return false;
}
} }
/// <summary> /// <summary>
@@ -73,38 +74,35 @@ namespace Stary.Evo
authorization = PlayerPrefs.GetString("Authorization"); authorization = PlayerPrefs.GetString("Authorization");
try 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(); var errorMsg = $"HTTP {webRequest.responseCode}\n" +
await webRequest.SendWebRequest(); $"URL: {url}\n" +
$"Error: {webRequest.error}\n" +
$"Response: {webRequest.downloadHandler.text}";
// 增强错误处理 Debug.LogError(errorMsg);
if (webRequest.result != UnityWebRequest.Result.Success) return false;
{
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<ResultMessageEntity>(webRequest.downloadHandler.text);
if (resultMessageEntity.code == 200)
return true; // 添加返回值
else
return false;
} }
ResultMessageEntity resultMessageEntity =
JsonConvert.DeserializeObject<ResultMessageEntity>(webRequest.downloadHandler.text);
if (resultMessageEntity.code == 200)
return true; // 添加返回值
return false;
} }
catch (Exception e) catch (Exception e)
{ {
Debug.LogError(e); Debug.LogError($"UnityEvo:WebRequestSystem.GetValidateToken" + e.Message);
return false;
} }
return false;
} }
/// <summary> /// <summary>
@@ -124,6 +122,7 @@ namespace Stary.Evo
message = "用户未登录,请先登录" message = "用户未登录,请先登录"
}; };
} }
//UnityWebRequest[] files = new UnityWebRequest[3]; //UnityWebRequest[] files = new UnityWebRequest[3];
WWWForm form = new WWWForm(); WWWForm form = new WWWForm();
@@ -132,12 +131,15 @@ namespace Stary.Evo
byte[] bytes = await File.ReadAllBytesAsync(path[i]); byte[] bytes = await File.ReadAllBytesAsync(path[i]);
form.AddBinaryData("files[]", bytes, Path.GetFileName(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.SetRequestHeader("Authorization", authorization);
webRequest.disposeUploadHandlerOnDispose = true; webRequest.disposeUploadHandlerOnDispose = true;
webRequest.disposeDownloadHandlerOnDispose = true; webRequest.disposeDownloadHandlerOnDispose = true;
webRequest.disposeCertificateHandlerOnDispose = true; webRequest.disposeCertificateHandlerOnDispose = true;
webRequest.timeout = 60;
await webRequest.SendWebRequest(); await webRequest.SendWebRequest();
webRequest.uploadHandler?.Dispose(); webRequest.uploadHandler?.Dispose();
// 更新错误检查方式 // 更新错误检查方式
@@ -159,18 +161,29 @@ namespace Stary.Evo
{ {
Debug.LogError("上传异常,无文件数据返回!!"); Debug.LogError("上传异常,无文件数据返回!!");
} }
return resultMessageEntity; return resultMessageEntity;
} }
} }
catch (Exception e)
{
Debug.LogError($"UnityEvo:WebRequestSystem.PostFile" + e.Message);
return new ResultMessageEntity()
{
code = 5001,
message = e.Message
};
}
} }
/// <summary> /// <summary>
/// GET请求数据 /// GET请求数据
/// </summary> /// </summary>
/// <param name="url">请求数据的URL地址</param> /// <param name="url">请求数据的URL地址</param>
/// <param name="token">token验证的参数此处为authorization</param> /// <param name="token">token验证的参数此处为authorization</param>
/// <returns></returns> /// <returns></returns>
public static async Task<ResultMessageEntity> GetFile(string url,string tempPath, Action<float> downloadProgress = null) public static async Task<ResultMessageEntity> GetFile(string url, string tempPath,
Action<float> downloadProgress = null)
{ {
if (!GetTokenState()) if (!GetTokenState())
{ {
@@ -184,54 +197,54 @@ namespace Stary.Evo
try try
{ {
using (UnityWebRequest webRequest = UnityWebRequest.Get(url)) using UnityWebRequest webRequest = UnityWebRequest.Get(url);
{ webRequest.downloadHandler = new DownloadHandlerFile(tempPath);
webRequest.downloadHandler = new DownloadHandlerFile(tempPath); if (authorization != null)
if (authorization != null) webRequest.SetRequestHeader("Authorization", authorization); // 修正请求头名称规范
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";
Debug.LogError(errorMsg);
return new ResultMessageEntity() var operation = webRequest.SendWebRequest();
{ while (!operation.isDone)
code = 5001, {
message = errorMsg downloadProgress?.Invoke(webRequest.downloadProgress);
}; await UniTask.Yield();
} }
else
// 增强错误处理
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 = 5001,
{ message = errorMsg
code = 200, };
message = "下载成功" }
}; else
} {
return new ResultMessageEntity()
{
code = 200,
message = "下载成功"
};
} }
} }
catch (Exception e) catch (Exception e)
{ {
Debug.LogError(e); Debug.LogError($"UnityEvo:WebRequestSystem.GetFile" + e.Message);
return new ResultMessageEntity() return new ResultMessageEntity()
{ {
code = 5001, code = 5001,
message = e.Message message = e.Message
}; };
} }
} }
/// <summary> /// <summary>
/// POST请求数据 /// POST请求数据
/// </summary> /// </summary>
@@ -250,39 +263,54 @@ namespace Stary.Evo
}; };
} }
using (UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, postData)) //第二种写法此行注释 try
{ {
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData); using (UnityWebRequest webRequest = UnityWebRequest.PostWwwForm(url, 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)
{ {
Debug.LogError(webRequest.error); byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData);
return new ResultMessageEntity() 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, Debug.LogError(webRequest.error);
message = webRequest.error return new ResultMessageEntity()
}; {
} code = 5001,
else message = webRequest.error
{ };
ResultMessageEntity resultMessageEntity = }
JsonConvert.DeserializeObject<ResultMessageEntity>(webRequest.downloadHandler.text); else
if (resultMessageEntity.code != 200) {
{ ResultMessageEntity resultMessageEntity =
Debug.LogError(resultMessageEntity.message); JsonConvert.DeserializeObject<ResultMessageEntity>(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
};
}
} }
/// <summary> /// <summary>
@@ -305,48 +333,48 @@ namespace Stary.Evo
try 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(); var errorMsg = $"HTTP {webRequest.responseCode}\n" +
if (authorization != null) $"URL: {url}\n" +
webRequest.SetRequestHeader("Authorization", authorization); // 修正请求头名称规范 $"Error: {webRequest.error}\n" +
$"Response: {webRequest.downloadHandler.text}";
await webRequest.SendWebRequest(); Debug.LogError(errorMsg);
return new ResultMessageEntity()
// 增强错误处理
if (webRequest.result != UnityWebRequest.Result.Success)
{ {
var errorMsg = $"HTTP {webRequest.responseCode}\n" + code = 5001,
$"URL: {url}\n" + message = errorMsg
$"Error: {webRequest.error}\n" + };
$"Response: {webRequest.downloadHandler.text}";
Debug.LogError(errorMsg);
return new ResultMessageEntity()
{
code = 5001,
message = errorMsg
};
}
ResultMessageEntity resultMessageEntity =
JsonConvert.DeserializeObject<ResultMessageEntity>(webRequest.downloadHandler.text);
if (resultMessageEntity.code != 200)
{
Debug.LogError(resultMessageEntity.message);
}
return resultMessageEntity;
} }
ResultMessageEntity resultMessageEntity =
JsonConvert.DeserializeObject<ResultMessageEntity>(webRequest.downloadHandler.text);
if (resultMessageEntity.code != 200)
{
Debug.LogError(resultMessageEntity.message);
}
return resultMessageEntity;
} }
catch (Exception e) catch (Exception e)
{ {
Debug.LogError(e); Debug.LogError($"UnityEvo:WebRequestSystem.Get" + e.Message);
return new ResultMessageEntity() return new ResultMessageEntity()
{ {
code = 5001, code = 5001,
message = e.Message message = e.Message
}; };
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "com.staryevo.main", "name": "com.staryevo.main",
"version": "1.2.14", "version": "1.2.15",
"displayName": "00.StaryEvo", "displayName": "00.StaryEvo",
"description": "This is an Framework package(后台服务器版本端口9527)", "description": "This is an Framework package(后台服务器版本端口9527)",
"unity": "2021.3", "unity": "2021.3",