
网络编程
文章平均质量分 68
ROger__Wong
这个作者很懒,什么都没留下…
展开
-
Webscarab关键源码分析(1)
最近写一个android上的东西,要用到http代理的一些东西,包括封装解析各种http request和response以及多连接并发管理各种麻烦的东西。虽然自己也能写,但感觉是在重复的发明轮子,不如拿一些现成的东西来用,而且更快更成熟。所以选择了Webscareb,打算把里面的http协议栈相关的东西裁减出来供自己使用,这就避免不了源码的阅读。但在网上搜了搜发现没有什么和这方面有关的资料,原创 2012-10-11 16:31:24 · 1339 阅读 · 0 评论 -
Webscarab关键源码分析(2)
接上篇说Request对象和Response对象Request代表一个请求,首先给出一个http请求头:GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1Host: net.tutsplus.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;原创 2012-10-12 09:39:26 · 1008 阅读 · 0 评论 -
WebScarab关键源码分析(3)
今天读的比较多,就多写点吧。一个Http代理要实现的功能不外乎就四句话,保存客户端发过来的http请求,将请求发给服务器端,搜集返回结果,并发给客户端,如果用webscarab的数据结构来描述这个过程的话也就: 客户socket的输入流----->> request对象 ------->>>response对象------->>>客户socket输出流如果把这三个箭头当做3个过程,原创 2012-10-12 16:47:31 · 1158 阅读 · 0 评论 -
WebScarab关键源码分析(3)(续)
接上篇。接下来是两个if,如果接收到的是401或者407返回码(其含义分别为需验证和代理服务器需验证),则重新调整验证信息,并在下一个while里继续请求内容。再一个是判断如果request使用的是head方法,则setNobody(),因为head方法是不可能有内容部分的,调用setnobody后未读取的输入流_in将不会再尝试读取。接着判断connect域的内容,如果是不是keep原创 2012-10-12 17:33:44 · 761 阅读 · 0 评论 -
WebScarab关键源码分析(4)
在上一篇博文里我们分析了URLFetcher的一些行为以及相关方法,顺着这个思路走,接着我们遇到的问题是:谁使用了URLFetcher?它是如何使用URLFetcher的?这就又牵扯到了两个关键的类:HTTPClientFactory和FetchQueue。首先从HTTPClientFactory说起,从名字我们也可以大概看出,这是一个工厂模式,这个工厂可以产生HTTPClient对象原创 2012-10-22 15:42:13 · 1185 阅读 · 0 评论 -
WebScarab关键源码分析(5)
接上篇分析FetcherQueue,这个大概是最麻烦的方法了,通过这个方法实现线程池进而实现异步操作,并将resquest和httpclient对象结合起来,同时还维护请求队列,并负责调用上层传下来的ConversationHandler方法。首先从构造函数说起: public FetcherQueue(String name, ConversationHandler handler原创 2012-10-22 16:32:50 · 1039 阅读 · 0 评论