C# WebClient 类可以用于多种场景,主要用于从网络上下载或上传数据。以下是一些常见的用途:
WebClient wc = new WebClient();
wc.DownloadFile("http://example.com/file.zip", @"C:\path\to\save\file.zip");
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);
DownloadString 方法获取JSON或XML格式的数据,并通过 JsonConvert.DeserializeObject<T>(对于JSON)或 XmlDocument(对于XML)进行解析。string jsonUrl = "http://example.com/api/data";
string jsonData = wc.DownloadString(jsonUrl);
var data = JsonConvert.DeserializeObject<MyDataType>(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 类,它提供了更好的性能和更多的功能。