三国卡牌客户端基础资源仓库
yyl
2026-03-28 25eb0e50d4e815efb16d1a9953beac6ea1c7cfc3
Assets/Launch/HttpRequest/HttpRequest.cs
@@ -15,45 +15,48 @@
    public const string defaultHttpContentType = "application/x-www-form-urlencoded";
    public const string jsonHttpContentType = "application/json ; charset=utf-8";
    public void RequestHttpPost(string _url, IDictionary<string, string> _parameters, string _contentType, int _retry = 3, Action<bool, string> _result = null)
    public async void RequestHttpPost(string _url, IDictionary<string, string> _parameters, string _contentType, int _retry = 3, Action<bool, string> _result = null)
    {
        var content = HashtablaToString(_parameters);
        HttpBehaviour.Create(_url, "POST", content, _contentType, _retry, _result);
         var task = HttpBehaviour.CreateAsync(_url, "POST", content, _contentType, _retry, _result);
         task.Forget();
    }
    public void RequestHttpPost(string _url, string _content, string _contentType, int _retry = 3, Action<bool, string> _result = null)
    public async void RequestHttpPost(string _url, string _content, string _contentType, int _retry = 3, Action<bool, string> _result = null)
    {
        HttpBehaviour.Create(_url, "POST", _content, _contentType, _retry, _result);
         var task = HttpBehaviour.CreateAsync(_url, "POST", _content, _contentType, _retry, _result);
         task.Forget();
    }
    public void RequestHttpGet(string _url, string _contentType, int _retry = 3, Action<bool, string> _result = null)
    public async void RequestHttpGet(string _url, string _contentType, int _retry = 3, Action<bool, string> _result = null)
    {
        HttpBehaviour.Create(_url, "GET", "", _contentType, _retry, _result);
         var task = HttpBehaviour.CreateAsync(_url, "GET", "", _contentType, _retry, _result);
         task.Forget();
    }
    public async UniTask<(bool ok, string message)> UnityWebRequestGetAsync(string _url, string _contentType, int _retry = 3, Action<bool, string> _result = null)
    {
        return await HttpBehaviour.CreateAsync(_url, "GET", "", _contentType, _retry, _result);
    }
    //2024-09-26 HttpWebRequest Get CDN资源在某些节日可能无法访问 包含keepalive的设定等不同情况 改用UnityWebRequest
    //获取CDN资源不建议使用HttpWebRequest
    public void UnityWebRequestGet(string _url, int timeout = 5, Action<bool, string> _result = null)
    public async UniTask<(bool ok, string message)> UnityWebRequestGet(string _url, int timeout = 5, Action<bool, string> _result = null)
    {
        StartCoroutine(GetDataB(_url, timeout, _result));
        return await GetDataAsync(_url, timeout, _result);
    }
    IEnumerator GetDataB(string remoteURL, int timeout, Action<bool, string> _result = null)
    private static async UniTask<(bool ok, string message)> GetDataAsync(string remoteURL, int timeout, Action<bool, string> _result = null)
    {
        UnityWebRequest request = UnityWebRequest.Get(remoteURL);
        request.timeout = timeout;
        yield return request.SendWebRequest();
        if (request.isDone)
        using (UnityWebRequest request = UnityWebRequest.Get(remoteURL))
        {
            if (request.result == UnityWebRequest.Result.Success)
            {
                _result(true, request.downloadHandler.text);
            }
            else
            {
                _result(false, request.result.ToString());
            }
            request.timeout = timeout;
            await request.SendWebRequest();
            var ok = request.result == UnityWebRequest.Result.Success;
            var message = ok ? request.downloadHandler.text : request.error;
            _result?.Invoke(ok, message);
            return (ok, message);
        }
    }