【发布时间】:2021-01-05 10:17:26
【问题描述】:
我在使用 Xamarin.iOS 应用时遇到问题。在启动时,我向服务器发送请求以进行授权。同时,应用程序会询问用户发送通知的权限。看起来应用程序进入前台并使用 OperationCanceledException 中断连接。由于这个问题,我无法验证用户。对于解决方法,我在捕获 OperationCanceledException 时提出了第二个请求。因此,有时用户会被授权两次。在这种情况下如何发送请求而不取消?
private async Task<string> PostAndHandleHttpRequestAsync(Dictionary<string, string> content)
{
var cancellationTokenSource = new CancellationTokenSource();
cancellationTokenSource.CancelAfter(15000);
CancellationToken token = cancellationTokenSource.Token;
var newClient = new HttpClient();
var contentSerialize = JsonConvert.SerializeObject(content);
try
{
var postAsyncResult = await newClient.PostAsync(GlobalSettings.urlToPHP, new StringContent(contentSerialize), token);
var responseBody = await postAsyncResult.Content.ReadAsStringAsync();
return responseBody;
}
catch (OperationCanceledException c)
{
// onetime retry
if (cancellationCounter == 0)
{
//Console.WriteLine("second");
cancellationCounter = 1;
var postAsyncResult = await newClient.PostAsync(GlobalSettings.urlToPHP, new StringContent(contentSerialize), token);
var responseBody = await postAsyncResult.Content.ReadAsStringAsync();
return responseBody;
}
else
{
cancellationCounter = 0;
return "Cancel";
}
return "Cancel";
}
catch (Exception e)
{
Console.WriteLine("Error PostAndHandleHttpRequestAsync " + e.Message);
return "Error";
}
}
【问题讨论】:
标签: ios xamarin push-notification httprequest httpclient