在我看来,大多数可以完成的事情 HttpWebRequest/Response 也可以通过 WebClient 班级。我在某个地方读了 WebClient 是一个高级包装纸 WebRequest/Response.
到目前为止,我看不到可以完成的任何事情 HttpWebRequest/Response 这是无法实现的 WebClient, ,httpwebrequest/响应也不会为您提供更多的“细粒度”控制。

我什么时候应该使用网络客户以及何时 HttpWebRequest/Response? (明显地, HttpWebRequest/Response 特定于HTTP。)

如果 HttpWebRequest/Response 那是较低的 WebClient, ,我能完成什么 HttpWebRequest/Response 我无法完成 WebClient?

有帮助吗?

解决方案

使用 HttpWebRequest 让您更多地控制该请求。您可以设置cookie,标题,协议等...在响应中,您也可以检索cookie和标题

其他提示

HttpWebRequest 揭露更多的东西,可以使您细化粒度协议控制,例如:无论您要使用饲养池,要使用什么连接池,是否要使用缓冲区写入,等等,等等。

WebClient 不会暴露所有这些(尽管您可以从 WebClient 并访问基础请求对象)。

WebClient 对于您只想执行操作的情况(例如:post/get/form上传)很有用,不愿意创建和管理 HttpWebRequest, RequestStream, HttpWebResponse, 和响应流。

来自蒂姆·豪(Tim Heuer)的博客 - http://timheuer.com/blog/archive/2008/03/14/calling-web-services-with-silverlight-2.aspx

相反,在Silverlight中,您需要使用WebClient或HTTPWebRequest。有什么不同?这是蒂莫尔版。 WebClient是一个更简单的实现,非常容易地完成获取请求并获得响应流。 httpwebrequest非常适合当您需要对请求进行更精细的控制时,需要发送标题或其他自定义。

Webclient 类在用户界面线程上运行,因此从Internet下载数据时,用户界面无响应。另一方面, httpwebrequest 类不会阻止用户界面线程,并且您的应用程序响应迅速。因此,在将要从Internet下载大量数据或数据源访问速度的应用程序中,您应该使用HTTPWebRequest类;在所有其他情况下,您都应使用WebClient类。

另一件事httpwebrquest允许您压缩,但他net.webclient类不支持HTTP压缩

另一个缺点 WebClient 它忽略了http吗 ContentType' charset 当您使用它以获取响应文本时的价值。您必须通过 Encoding 财产。

“ htttpwebrequest”在.NET 4.5中已过时。现在,此课程仅是内部。

一个示例:在一个请求/响应周期中发布数据并返回处理的数据似乎是不可能的,但是您可以使用htttpwebrequest做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top