using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; using UnityEngine; using Assets.Scenes.Ride.Scripts; namespace Assets.Scripts.Apis { public class PfHttpClientHandler: HttpClientHandler { protected async override Task SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) { var badreqText = App.GetLocalString("Please check the network status!"); try { var response = await base.SendAsync(request, cancellationToken).ConfigureAwait(false); //{"result":false,"errMsg":"已在其他设备登录","code":401} var result = await response.Content.ReadAsStringAsync().ConfigureAwait(false); if (request.RequestUri.ToString().Contains(App.Host) && result.Contains(@"{""result"":false,")) { var json = ParseJson>(result); if (json.code == 401) { App.is401 = json.errMsg; UnityMainThreadDispatcher.Instance().Enqueue(LoadLogin(json.errMsg)); } } else { App.is401 = null; } if (response.StatusCode != System.Net.HttpStatusCode.OK) { response.Content = new StringContent(new JsonResult { result = false, errMsg = badreqText, data = null }.ToString()); } return response; } catch (Exception e) { Debug.Log(e); HttpResponseMessage httpResponse = new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.BadRequest, Content = new StringContent(new JsonResult { result = false, errMsg = badreqText, data = null }.ToString()) }; return httpResponse; } } private T ParseJson(string result) { return JsonConvert.DeserializeObject(result, new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Local }); } IEnumerator LoadLogin(string msg) { //释放资源 //MapUDPService.Dispose(); //删除本地文件 Helper.DelectDir(PFConstants.MapWorkoutRecordTempFolder); App.tempRecordData = null; UnityEngine.SceneManagement.SceneManager.LoadScene(0); yield return null; } } }