diff --git a/Assets/TEngine/Runtime/GameFramework/Utility/Utility.Http.cs b/Assets/TEngine/Runtime/GameFramework/Utility/Utility.Http.cs
index f6af98ac..a3c16b84 100644
--- a/Assets/TEngine/Runtime/GameFramework/Utility/Utility.Http.cs
+++ b/Assets/TEngine/Runtime/GameFramework/Utility/Utility.Http.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;
@@ -13,31 +14,94 @@ namespace TEngine
///
public static partial class Http
{
- ///
- /// GET请求与获取结果.
- ///
- public static async UniTask Get(string url,float timeout = 5f)
+ ///
+ /// GET请求与获取结果。
+ ///
+ /// 网络URL。
+ /// 超时时间。
+ /// 请求结果。
+ public static async UniTask Get(string url, float timeout = 5f)
{
var cts = new CancellationTokenSource();
cts.CancelAfterSlim(TimeSpan.FromSeconds(timeout));
UnityWebRequest unityWebRequest = UnityWebRequest.Get(url);
+ return await SendWebRequest(unityWebRequest, cts);
+ }
+
+ ///
+ /// Post请求与获取结果.
+ ///
+ /// 网络URL。
+ /// Post数据。
+ /// 超时时间。
+ /// 请求结果。
+ public static async UniTask Post(string url, string postData, float timeout = 5f)
+ {
+ var cts = new CancellationTokenSource();
+ cts.CancelAfterSlim(TimeSpan.FromSeconds(timeout));
+
+ UnityWebRequest unityWebRequest = UnityWebRequest.Post(url, postData);
+ return await SendWebRequest(unityWebRequest, cts);
+ }
+
+ ///
+ /// Post请求与获取结果.
+ ///
+ /// 网络URL。
+ /// Post数据。
+ /// 超时时间。
+ /// 请求结果。
+ public static async UniTask Post(string url, Dictionary formFields, float timeout = 5f)
+ {
+ var cts = new CancellationTokenSource();
+ cts.CancelAfterSlim(TimeSpan.FromSeconds(timeout));
+
+ UnityWebRequest unityWebRequest = UnityWebRequest.Post(url, formFields);
+ return await SendWebRequest(unityWebRequest, cts);
+ }
+
+ ///
+ /// Post请求与获取结果.
+ ///
+ /// 网络URL。
+ /// Post数据。
+ /// 超时时间。
+ /// 请求结果。
+ public static async UniTask Post(string url, WWWForm formData, float timeout = 5f)
+ {
+ var cts = new CancellationTokenSource();
+ cts.CancelAfterSlim(TimeSpan.FromSeconds(timeout));
+
+ UnityWebRequest unityWebRequest = UnityWebRequest.Post(url, formData);
+ return await SendWebRequest(unityWebRequest, cts);
+ }
+
+ ///
+ /// 抛出网络请求。
+ ///
+ /// UnityWebRequest。
+ /// CancellationTokenSource。
+ /// 请求结果。
+ public static async UniTask SendWebRequest(UnityWebRequest unityWebRequest, CancellationTokenSource cts)
+ {
try
{
var (isCanceled, _) = await unityWebRequest.SendWebRequest().WithCancellation(cts.Token).SuppressCancellationThrow();
if (isCanceled)
{
- Log.Warning($"HttpGet {url} be canceled!");
+ Log.Warning($"HttpPost {unityWebRequest.url} be canceled!");
}
}
catch (OperationCanceledException ex)
{
if (ex.CancellationToken == cts.Token)
{
- Log.Debug("HttpGet Timeout");
+ Log.Debug("HttpPost Timeout");
return string.Empty;
}
}
+
return unityWebRequest.downloadHandler.text;
}
}