问题描述
这是我的委托处理程序代码:
public class MyHandler: DelegatingHandler
{
public MyHandler(HttpMessageHandler innerHandler) : base(innerHandler) { }
public IDataStore<Object> DataStore => DependencyService.Get<IDataStore<Object>>();
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
{
HttpResponseMessage response = new HttpResponseMessage();
response = await base.SendAsync(request,cancellationToken);
int status_code = (int)response.StatusCode;
if (response.IsSuccessstatusCode)
{
return response;
}
else if (status_code == 401 || status_code == 403)
{
try
{
var response_token = await DataStore.Updatetoken();
if (response_token)
{
response = await base.SendAsync(request,cancellationToken);
}
else
{
await Application.Current.MainPage.displayAlert("",AppResources.SERVER_ERROR,AppResources.BTNOK);
await Application.Current.MainPage.Navigation.PushAsync(new MainMenu());
}
}
catch (AggregateException ae)
{
foreach (Exception e in ae.InnerExceptions)
{
if (e is TaskCanceledException)
Console.WriteLine("Unable to compute mean: {0}",((TaskCanceledException)e).Message);
else
Console.WriteLine("Exception: " + e.GetType().Name);
}
}
finally
{
}
}
return response;
}
}
当我通过更新令牌获得真实信息时,我需要调用同一个未经授权的 async Task
。在这种情况下,我在 public async Task<Patient> PatientValidation
上获得 401 状态,但还有更多任务可以生成此状态。所以我只想再次调用同一个任务,用户不应该知道发生了这种情况并且他得到了新的令牌。此代码 response = await base.SendAsync(request,cancellationToken);
不能解决我的问题。
知道如何解决这个问题吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)