一个httpwebrequest异步下载的例子

     最近经常要用到模拟网页的登录,网页的抓取。一开始都是用同步的方法获取,同步在请求量比较小的情况下还可以接受。但是比如我一下子请求上百个,上千个页面就显得力不从心了。昨天终于狠下心来研究了一下异步的获取方式。虽说没有同步的方法简单,不过效率上真的提高了很多。现在记下来,以便以后查阅吧。

 

复制代码
代码
namespace 异步调用方法
{
class Program
{

static void Main(string[] args)
{
for (int i = 0; i < 1111; i++)
{
HttpWebRequest request
= (HttpWebRequest)WebRequest.Create("http://www.cnblogs.com/qianlifeng/");
request.BeginGetResponse(
new AsyncCallback(OnResponse), request);
Console.WriteLine(
"请求" + i + "完成");
}
Console.Read();
}

static void OnResponse(IAsyncResult ar)
{
HttpWebRequest request
= (HttpWebRequest)ar.AsyncState;
HttpWebResponse response
= (HttpWebResponse)request.EndGetResponse(ar);
Stream stream
= response.GetResponseStream();
StreamReader sr
= new StreamReader(stream, Encoding.UTF8);
Console.WriteLine( sr.ReadToEnd());
}
}
}
复制代码

 

posted @   qianlifeng  阅读(5261)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
点击右上角即可分享
微信分享提示