C# WebClient 类可以用于多种场景,主要用于从网络上下载或上传数据。以下是一些常见的用途:
- 文件下载:WebClient 可以方便地从指定的 URL 下载文件,支持断点续传,且可以处理各种HTTP重定向。
WebClient wc = new WebClient(); wc.DownloadFile("http://example.com/file.zip", @"C:\path\to\save\file.zip");
- 文件上传:可以使用 WebClient 的
UploadFile
方法将本地文件上传到服务器。
WebClient wc = new WebClient(); wc.UploadFile("http://example.com/upload", @"C:\path\to\local\file.txt");
- 获取网页内容:通过
DownloadString
或DownloadData
方法,可以获取指定URL的HTML内容。
string url = "http://example.com"; string htmlContent = wc.DownloadString(url);
- 处理JSON和XML:可以使用
DownloadString
方法获取JSON或XML格式的数据,并通过JsonConvert.DeserializeObject
(对于JSON)或XmlDocument
(对于XML)进行解析。
string jsonUrl = "http://example.com/api/data"; string jsonData = https://www.yisu.com/ask/wc.DownloadString(jsonUrl);>(jsonData);
- 自定义请求:可以通过设置
WebClient
的Headers
属性来发送自定义HTTP请求头,例如处理Cookies、身份验证等。
WebClient wc = new WebClient(); wc.Headers.Add("Cookie", "key=value"); wc.Headers.Add("Authorization", "Bearer token");
- 异步操作:可以使用
WebClient
的DownloadStringTaskAsync
和UploadFileTaskAsync
方法执行异步操作,这在处理大量数据或需要高性能时非常有用。
await wc.DownloadStringTaskAsync("http://example.com"); await wc.UploadFileTaskAsync("http://example.com/upload", @"C:\path\to\local\file.txt");
- 流式传输:可以使用
WebClient
的GetStream
方法获取一个Stream
对象,以便进行流式传输,这对于处理大文件或实时数据流非常有用。
using (Stream stream = wc.GetStream("http://example.com")) { // 处理流数据 }
请注意,尽管 WebClient
在许多场景下都很有用,但它不是线程安全的。如果需要在多线程环境中使用,建议使用 HttpClient
类,它提供了更好的性能和更多的功能。