阅读量:90
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 = wc.DownloadString(jsonUrl);
var data = JsonConvert.DeserializeObject(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 类,它提供了更好的性能和更多的功能。