Windows runtime Windows.Web.Http.HttpClient超时选项
由于SSL证书问题,我们正在我的应用程序服务层中使用“Windows.Web.Http.HttpClient”API 我为我的项目参考了下面的示例Windows runtime Windows.Web.Http.HttpClient超时选项,windows-runtime,windows-store-apps,Windows Runtime,Windows Store Apps,由于SSL证书问题,我们正在我的应用程序服务层中使用“Windows.Web.Http.HttpClient”API 我为我的项目参考了下面的示例 如何在“Windows.Web.Http.HttpClient”API中实现超时选项您可以使用带有超时的CancellationTokenSource HttpClient client = new HttpClient(); var cancellationTokenSource = new Cancellatio
如何在“Windows.Web.Http.HttpClient”API中实现超时选项您可以使用带有超时的CancellationTokenSource
HttpClient client = new HttpClient();
var cancellationTokenSource = new CancellationTokenSource(2000); //timeout
try
{
var response = await client.GetAsync("https://test.example.com", cancellationTokenSource.Token);
}
catch (TaskCanceledException ex)
{
}
编辑:
对于Windows.Web.Http.HttpClient,您应该使用AsTask()扩展方法:
HttpClient client = new HttpClient();
System.Threading.CancellationTokenSource source = new System.Threading.CancellationTokenSource(2000);
try
{
client.GetAsync(new Uri("http://example.com")).AsTask(source.Token);
}
catch(TaskCanceledException ex)
{
}
我的错误是,上面的示例是使用System.Net.Http.HttpClient编写的。如果您需要坚持使用Windows.Web.HttpClient,您可能需要查看“Windows.Web.Http.HttpClient”CancellationTokenSource中提供的相同实现。真的吗?原因GetAsync接受HttpCompletionOption。我无法传递令牌。Windows.Web.Http.HttpClient是WinRT类,返回的IAsyncOperation不是任务。既然您有AsTask扩展方法,那么Is应该没什么大不了的。(我的初始答案更新了一个样本)。