And*_*rry 8 .net asynchronous httpwebrequest
异步获取Web请求的最佳做法是什么?
我想从互联网上下载页面(无关紧要),并尽可能避免阻塞线程.
以前我认为只使用'BeginGetResponse'和'EndGetResponse'对就足够了.但仔细观察后我也发现可以选择使用'BeginGetRequestStream'
[UPDATE] GetRequestStream用于POST操作
然后添加到混乱中,我应该使用stream.BeginRead和EndRead吗?
[更新]这个文章表明,它是更好的处理异步使用Stream.BeginRead的HttpResponse.GetResponseStream
真是一团糟!
有人能指出我正确的方向吗?
什么是最佳实践?
您可以自己编写这些代码,也可以使用WebClient为您完成大量繁重的工作.例如,要将文件作为字符串下载,您可以调用DownloadStringAsync(),最终将触发OnDowloadStringCompleted事件.如果文件是二进制文件,您可以尝试使用DownloadDataAsync().
您可以使用 Begin/EndGetResponse 异步等待 HTTP 响应。如果您正在执行 POST 并需要异步发送大量数据,请使用 Begin/EndGetRequestStream。
这并不是异步通信所独有的 - 您可以查找同步版本以获取其他信息。
我不确定为什么您要在请求流上进行读取 - 最有可能的是您会写入它,并从响应流中读取。
最后,Jeffrey Richter 的博客有一篇关于 HttpWebRequest 和流的一些微妙之处的文章。
| 归档时间: |
|
| 查看次数: |
7810 次 |
| 最近记录: |