#if ENABLE_UNITYWEBREQUEST && (!UNITY_2019_1_OR_NEWER || UNITASK_WEBREQUEST_SUPPORT) using System; using System.Collections.Generic; using UnityEngine.Networking; namespace Cysharp.Threading.Tasks { public class UnityWebRequestException : Exception { public UnityWebRequest UnityWebRequest { get; } #if UNITY_2020_2_OR_NEWER public UnityWebRequest.Result Result { get; } #else public bool IsNetworkError { get; } public bool IsHttpError { get; } #endif public string Error { get; } public string Text { get; } public long ResponseCode { get; } public Dictionary ResponseHeaders { get; } string msg; public UnityWebRequestException(UnityWebRequest unityWebRequest) { this.UnityWebRequest = unityWebRequest; #if UNITY_2020_2_OR_NEWER this.Result = unityWebRequest.result; #else this.IsNetworkError = unityWebRequest.isNetworkError; this.IsHttpError = unityWebRequest.isHttpError; #endif this.Error = unityWebRequest.error; this.ResponseCode = unityWebRequest.responseCode; if (UnityWebRequest.downloadHandler != null) { if (unityWebRequest.downloadHandler is DownloadHandlerBuffer dhb) { this.Text = dhb.text; } } this.ResponseHeaders = unityWebRequest.GetResponseHeaders(); } public override string Message { get { if (msg == null) { if(!string.IsNullOrWhiteSpace(Text)) { msg = Error + Environment.NewLine + Text; } else { msg = Error; } } return msg; } } } } #endif