Files
ZHGD_Web/Assets/Script/Tool/WebRequsetTool.cs
2025-07-13 23:16:20 +08:00

86 lines
2.3 KiB
C#

using System.Collections;
using System.Text;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Networking;
public class WebRequsetTool : Singleton<WebRequsetTool>
{
/// <summary>
/// 网络GET请求
/// </summary>
/// <param name="url">网络链接</param>
/// <param name="action">回调事件</param>
public void Get(string url, UnityAction<string> action)
{
StartCoroutine(GetRequest(url, action));
}
/// <summary>
/// 网络POST请求
/// </summary>
/// <param name="url">网络链接</param>
/// <param name="data">请求数据</param>
/// <param name="action">回调函数</param>
public void Post(string url, string data, UnityAction<string> action)
{
StartCoroutine(PostRequest(url, data, action));
}
/// <summary>
/// 完成网络GET请求
/// </summary>
/// <param name="url">网络链接</param>
/// <param name="action">回调函数</param>
/// <returns></returns>
IEnumerator GetRequest(string url, UnityAction<string> action)
{
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.Success)
{
action?.Invoke(request.downloadHandler.text);
}
else
{
Debug.LogError(request.error);
}
request.Dispose();
}
/// <summary>
/// 完成网络POST请求
/// </summary>
/// <param name="url">网络链接</param>
/// <param name="data">请求数据</param>
/// <param name="action">回调函数</param>
/// <returns></returns>
IEnumerator PostRequest(string url, string data, UnityAction<string> action)
{
UnityWebRequest request = new UnityWebRequest(url, "POST");
byte[] bodyRaw = Encoding.UTF8.GetBytes(data);
request.uploadHandler = new UploadHandlerRaw(bodyRaw);
request.downloadHandler = new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.Success)
{
action?.Invoke(request.downloadHandler.text);
}
else
{
Debug.LogError(request.error);
}
request.Dispose();
}
}