Windows runtime Windows.Web.Http.HttpClient超时选项

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

由于SSL证书问题,我们正在我的应用程序服务层中使用“Windows.Web.Http.HttpClient”API

我为我的项目参考了下面的示例


如何在“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应该没什么大不了的。(我的初始答案更新了一个样本)。