在Xamarin Forms中没有WebClient类

3

我需要在Xamarin.Forms中使用C# WebClient

这个类的文档在这里:

根据要求,我已经导入了System.Net命名空间,但它出现为不必要的命名空间。
System.Net.WebClient命名空间不可用。

我是否遗漏了什么?-该类应该显示在智能感知列表中对吧?

1个回答

6
当您提到“Xamarin.Forms”时,这是哪种项目类型?是PCL、Android App、iOS App还是其他什么?
让我们假设这是可移植类库(PCL)。在这种情况下,答案是否定的。
PCL仅提供.NET Framework的子集,此处不包含WebClient。那么应该使用什么替代品呢?HttpClient如何?
使用HttpClient有几个令人信服的理由:
  1. Xamarin为Android和iOS提供了HttpClientHandlers,利用平台特定的HTTP API,例如iOS上的NSUrlConnection。
  2. HttpClient是完全异步的API,这非常好!我们不想在获取内容时阻塞UI。
  3. 它非常容易使用。
这里有一个小例子:
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相反,后者已经存在于.NET 1.1中。


太棒了,我会尝试的 :-) 是的,这个项目是PCL - 我忘记提到了。 - jwknz
HttpClient非常好用,一个提示是为您的应用程序创建一个单一实例并保持重复使用,否则您将无法获得连接池等优势。 - Bill Reiss
有没有办法可以处理上传文件的进度,以便在大文件的情况下我们可以将进度以百分比的形式显示到界面上? - Jignesh Patel
是的,但这不在本问题的范围内。请创建一个新的问题@JigneshPatel - Cheesebaron
@BillReiss,您如何使用Fusillade的单个HttpClient实例并设置不同的优先级? - ledragon
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接