106 lines
3.0 KiB
C#
106 lines
3.0 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));
|
|
}
|
|
|
|
public void GetTexture(string url, UnityAction<Texture2D> action)
|
|
{
|
|
StartCoroutine(GetRequestTexture(url, action));
|
|
}
|
|
|
|
IEnumerator GetRequestTexture(string url, UnityAction<Texture2D> action)
|
|
{
|
|
UnityWebRequest unityWebRequestTexture = UnityWebRequestTexture.GetTexture(url);
|
|
yield return unityWebRequestTexture.SendWebRequest();
|
|
|
|
if (unityWebRequestTexture.result != UnityWebRequest.Result.Success)
|
|
{
|
|
Debug.LogError(unityWebRequestTexture.error);
|
|
}
|
|
else
|
|
{
|
|
action?.Invoke(DownloadHandlerTexture.GetContent(unityWebRequestTexture));
|
|
}
|
|
}
|
|
|
|
/// <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();
|
|
}
|
|
|
|
}
|