一个httpwebrequest异步下载的例子
最近经常要用到模拟网页的登录,网页的抓取。一开始都是用同步的方法获取,同步在请求量比较小的情况下还可以接受。但是比如我一下子请求上百个,上千个页面就显得力不从心了。昨天终于狠下心来研究了一下异步的获取方式。虽说没有同步的方法简单,不过效率上真的提高了很多。现在记下来,以便以后查阅吧。
{
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());
}
}
}
一个httpwebrequest异步下载的例子相关推荐
- unity下载文件三(http异步下载)
异步下载,顾名思义就是不影响你主线程使用客户端的时候,人家在后台搞你的明堂. 直接入主题,既然要下载,首先得请求,请求成功之后进行回调,这就是一个异步过程,异步回调的时间不可控. 1.首先请求下载. ...
- Swift多线程:使用GCD实现异步下载图片
GCD属于系统及的线程管理,功能很强大,比上两次咱们分享的Operation要强大.有很多老前辈们已经创造了非常非常多的资料介绍GCD,因为大家都是把GCD放在了多线程内容分享的最开始,所以导致好多好 ...
- 使用 NSURLSession 开发一个支持后台下载和断点续传的下载工具
NSURLSession 是 iOS 系统提供给我们的原生网络操作库,它提供了网络操作相关的一系列特性支持,比如缓存控制,Cookie管理,HTTP 认证处理等等,是一套整体的网络操作处理解决方案. ...
- [Swift]在不依赖三方库的情况下如何异步下载和缓存图片?
在可滚动视图(如UITableView)中异步加载大量图片是一个很常见的任务. 然而,在图片正在下载的同时又要保持应用程序流畅滚动,可能有点挑战. 许多开发人员依靠像Alamofire和SDWebIm ...
- Celery - 一个懂得 异步任务 , 定时任务 , 周期任务 的芹菜
1.什么是Celery? Celery 是芹菜 Celery 是基于Python实现的模块, 用于执行异步定时周期任务的 其结构的组成是由 1.用户任务 app 2.管道 broker ...
- Android异步下载
概述 实现App常见下载公共 支持通知栏显示 支持 暂停.取消功能,使用Service.AsyncTask实现异步下载.特点简单.实用.方便源码扩展修改 详细 代码下载:http://www.demo ...
- Android多线程分析之一:使用Thread异步下载图像
打算整理一下对 Android Framework 中多线程相关知识的理解,主要集中在 Framework 层的 Thread, Handler, Looper, MessageQueue, Mess ...
- Android异步下载网络图片(其三:ExecutorService)
在第一节中,我们使用Handler.Thread/Runnable .URL.HttpURLConnection等等来进行异步下载网络图片.然后第二节中换了AsyncTask方式.那么这一节我们再应用 ...
- Android异步下载网络图片(其二:AsyncTask)
在上一节中,我们使用Handler.Thread/Runnable .URL.HttpURLConnection等等来进行异步下载网络图片. 但是采用这种方式有一些缺点,如下: 线程的开销较大,如果每 ...
最新文章
- Android图形---OpenGL(二)
- 电商系统的高并发设计和挑战
- 我在PMCAFF,感觉身体被掏空
- 【Luogu】P3950部落冲突(树链剖分)
- SpringBoot Web原生组件注入(Servlet、Filter、Listener)
- 转:ASP.Net下两种全局变量的设置和读取方法
- eclipse中的java包awt_Eclipse中打包java程序
- angular 首屏加载优化_[转]Angular4首页加载慢优化之路
- 【MySQL】mysql查看库 表占用存储空间大小
- 1.2、安装Django-1.5.1及所需要的Python2.74环境
- tpl-spring-mybatis 模板工程
- HOOK使用:全局键盘钩子
- QDialog之屏蔽Esc键
- GCP+WORDPRESS建站。
- 服务器装系统出现命令提示符,怎么通过cmd命令提示符重装系统?具体怎么操作?...
- nodejs addon
- 13-SQLite之group by
- 批处理文件*.bat打开后闪退的处理方法
- Vue中常用的提示信息:
- 神经网络程序设计学习心得