WebClient班和HttpWebRequest班有什么区别.网他们都做着非常相似的事情.事实上,为什么它们没有合并到一个类中(太多的方法/变量等可能是一个原因,但在.NET中还有其他类违反了这一规则).

谢谢

推荐答案

WebClient是建立在HttpWebRequest之上的更高级别抽象,用于简化最常见的任务.例如,如果要从HttpWebResponse中获取内容,必须从响应流中读取:

var http = (HttpWebRequest)WebRequest.Create("http://example.com");
var response = http.GetResponse();

var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();

使用WebClient,您只需执行DownloadString项操作:

var client = new WebClient();
var content = client.DownloadString("http://example.com");

Note: I left out the 100 statements from both examples for brevity. You should definitely take care to dispose your web request objects properly.

通常,WebClient适用于快速而肮脏的简单请求,而HttpWebRequest适用于需要对整个请求进行更多控制的情况.

.net相关问答推荐

条带连接支付—引发异常

如何使用.NET8MapIdentityApi设置OpenApi操作ID

仅在有换行符时捕获分隔符之间的所有文本

C#/.NET + VisualStudio,命名空间问题

如何创建 LINQ to SQL 事务?

为什么这个多态 C# 代码会打印它的功能?

Silverlight 与 Flex

有什么方法可以在不重新编译的情况下覆盖 .NET Windows 服务名称?

在 C# 中将字符串转换为十六进制字符串

公钥令牌的作用是什么?

如何从 .NET 中的流中获取 MemoryStream?

WCF服务客户端:内容类型text/html;响应消息的charset=utf-8 与绑定的内容类型不匹配

检索字典值最佳实践

Double.TryParse 或 Convert.ToDouble - 哪个更快更安全?

在同一解决方案中引用 2 个不同版本的 log4net

形成两个列表并集的最简单方法

.NET 中的对象引用有多大?

从 'System.Int32' 到 'System.Nullable`1[[System.Int32, mscorlib]] 的无效转换

检测到包降级警告(dotnet core,vs 2017)

没有科学记数法的双精度字符串转换