【问题标题】:Windows.Web.Http.HttpClient Timeout OptionWindows.Web.Http.HttpClient 超时选项
【发布时间】:2013-11-01 08:02:08
【问题描述】:

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

我为我的项目参考了以下示例。

http://code.msdn.microsoft.com/windowsapps/HttpClient-sample-55700664

我们如何在“Windows.Web.Http.HttpClient” API 中实现超时选项

【问题讨论】:

    标签: windows-runtime windows-store-apps


    【解决方案1】:

    您可以使用带有超时的 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,你可能想看看msdn.microsoft.com/en-us/library/windows/apps/…
    • “Windows.Web.Http.HttpClient”CancellationTokenSource 中提供相同的实现。
    • 真的吗?原因 GetAsync 采用 HttpCompletionOption。我无法传递令牌。
    • Windows.Web.Http.HttpClient 是一个 WinRT 类并返回一个不是任务的 IAsyncOperation。应该没什么大不了的,因为您有 AsTask 扩展方法。 (我的初始答案已更新为示例)。
    猜你喜欢
    • 2020-01-01
    • 2019-04-29
    • 2022-01-14
    • 2011-11-05
    • 2013-08-31
    • 2012-11-11
    • 2018-07-02
    • 2016-01-29
    • 1970-01-01
    相关资源
    最近更新 更多