c# - Xamarin Forms 中没有 WebClient 类

标签 c# web xamarin namespaces xamarin.forms

我在 Xamarin.Forms 中的 C# WebClient 类之后

类的文档在这里:

我已经按照要求导入了 System.Net 命名空间,但它是一个不必要的命名空间。
System.Net.WebClient 命名空间不可用。

有什么我想念的吗? - 该类(class)应该出现在智能感知中,对吧?

最佳答案

当您在“Xamarin.Forms”中说时,这是什么项目类型? PCL、Android 应用程序、iOS 应用程序?还有别的吗?

让我们假设这是一个可移植类库 (PCL)。在这种情况下,答案是否定的。

PCL 仅提供 .NET Framework 的一个子集,在本例中它包含 WebClient。你应该用什么代替? HttpClient 呢?

使用 HttpClient 的几个令人信服的理由是:

  1. Xamarin 为 Android 和 iOS 提供 HttpClientHandlers,它们利用平台特定的 HTTP API,例如 iOS 上的 NSUrlConnection。

  2. HttpClient 是一个完全异步 API,非常棒!我们不想在获取内容时阻塞 UI。

  3. super 好用

给你的小样本:

static HttpClient _client = new HttpClient(); // you should reuse a HttpClient!

private async Task<string> FetchStuffAsync()
{
    using (var response = await _client.GetAsync("http://google.com"))
    {
        if (response.IsSuccessStatusCode)
        {
            // Horray it went well!
            var page = await response.Content.GetStringAsync();
            return page;
        }
    }

    return null;
}

在 HttpClient 之上,您可以获得各种好处,例如 Refit 和 Fusilade。然后你可以使用 Polly 进行断路器或重试。

结论: 使用 HttpClient,这是一个现代的 .NET API,与 WebClient 相反,WebClient 是古老的,自 1.1 以来一直在 .NET 中

关于c# - Xamarin Forms 中没有 WebClient 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42122156/

相关文章:

node.js - 我应该为 WebP 图像启用 GZIP 压缩吗?

ios - mvvmcross showviewmodel byte[] 作为参数

c# - HttpClient PostAsync() 不起作用

c# - 如何使用 asp.net 删除文件?

c# - asp.net core 5.0 RequestSizeLimit 不起作用

asp.net - 为网站添加配置转换

javascript - 如何将html中的ng-model值获取到javascript

android - 什么是 com.android.externalstorage?

c# - 正则表达式删除一些文本作为超链接

c# - 如何在 C# 中使用 SevenZipSharp/Unrar 知道多 rar 文件中哪个 rar 是第一个?