77 lines
2.8 KiB
C#
77 lines
2.8 KiB
C#
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<HttpResponseMessage> 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<JsonResult<object>>(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<object> { 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<object> { result = false, errMsg = badreqText, data = null }.ToString())
|
|
};
|
|
return httpResponse;
|
|
}
|
|
|
|
}
|
|
private T ParseJson<T>(string result)
|
|
{
|
|
return JsonConvert.DeserializeObject<T>(result, new JsonSerializerSettings
|
|
{
|
|
DateTimeZoneHandling = DateTimeZoneHandling.Local
|
|
});
|
|
}
|
|
IEnumerator LoadLogin(string msg)
|
|
{
|
|
//释放资源
|
|
MapUDPService.Dispose();
|
|
App.MainDeviceAdapter.Dispose();
|
|
//删除本地文件
|
|
Helper.DelectDir(PFConstants.MapWorkoutRecordTempFolder);
|
|
App.tempRecordData = null;
|
|
UnityEngine.SceneManagement.SceneManager.LoadScene(0);
|
|
yield return null;
|
|
}
|
|
}
|
|
}
|