HttpsManager.cs 1.61 KB
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
using System.Text;

public class HttpsManager : Singleton<HttpsManager>
{
    // GET请求示例
    public IEnumerator GetRequest(string url, System.Action<string> onSuccess, System.Action<string> onError = null)
    {
        using (UnityWebRequest request = UnityWebRequest.Get(url))
        {
            yield return request.SendWebRequest();

            if (request.result == UnityWebRequest.Result.Success)
            {
                onSuccess?.Invoke(request.downloadHandler.text);
            }
            else
            {
                onError?.Invoke($"Error: {request.error}, {request.downloadHandler.text}");
            }
        }
    }

    // POST请求示例(JSON数据)
    public IEnumerator PostRequest(string url, string jsonData, System.Action<string> onSuccess,
        System.Action<string> onError = null)
    {
        byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonData);

        using (UnityWebRequest request = new UnityWebRequest(url, "POST"))
        {
            request.uploadHandler = new UploadHandlerRaw(bodyRaw);
            request.downloadHandler = new DownloadHandlerBuffer();
            request.SetRequestHeader("Content-Type", "application/json");


            yield return request.SendWebRequest();

            if (request.result == UnityWebRequest.Result.Success)
            {
                onSuccess?.Invoke(request.downloadHandler.text);
            }
            else
            {
                onError?.Invoke($"Error: {request.error}, {request.downloadHandler.text}");
            }
        }
    }
}