Webclient与HTTPWebrequest/httpwebresponse
-
18-09-2019 - |
题
在我看来,大多数可以完成的事情 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做到这一点。