快速业务通道

利用httpclient模拟站点的登录发帖回复 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21

利用httpclient模拟站点的登录发帖回复

时间:2011-01-07 BlogJava 陈新汉

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供支持 HTTP 协议的客户端编程工具包,模拟浏览器的行为。它提供了很多的方法来简化网络的访问,虽然大部分的功能可以使用较底层的 java.net.HttpURLConnection 来实现。例如:

实现了所有 HTTP 的方法( GET,POST 等)

支持 HTTPS 协议

支持代理服务器

自动维护 Cookies 等 

我们知道,http 协议是面向无连接的,要维持会话,现在基本上都是采用基于 Cookies 的方式( Session 机制也是通过 Cookies 实现的),所以 HttpClient 的自动维护 Cookies 的方式对我们的登录发帖回复非常有用(一般网站都需要先登录再发帖回复)。

下面的 例子都是采用 commons-httpclient-3.1.jar 包来实现的(虽然 commons-httpclient-4.0 已经发布,但是代码发生了较大的重构,调用方式也发生了很大的改变)。

下载 jar 包的路径为: http://hc.apache.org/downloads.cgi

由于 httpclient 使用了 Apache Jakarta common 下的子项目 logging 和 codec ,所以也需要在 http://commons.apache.org/ 下载这两个包:

commons-logging.jar

commons-codec-1.3.jar

为了更好地理解代码,设计的 UML 类图如下:

方法调用的时序图如下:

旋喘httpclient庁亭嫋泣議鞠村窟愉指鹸(2)

扮寂:2011-01-07 BlogJava 蛎仟査

凪嶄?BrowserContext 窃旗燕箝誓匂貧和猟斤??略擦 HttpClient 全俊才 Cookies 。 KaixinSitePost 頁減夭糞?蝕伉利議醤悶鞠村窟愉指鹸貸辞議窃。

BrowserContext 議旗鷹泌和?

1 /** */ /**   2 *  Copyright (C): 2009   3 *  @author 蛎仟査   4 *  Aug 24, 2009 3:09:00 PM   5   */   6   7 /** */ /**   8 * 箝誓匂序殻貧和猟   9   */ 10 public   class BrowserContext 11 { 12     private HttpClient client; // 廣吭?耽倖嫋泣才耽倖喘薩?斤哘匯倖汽鏡議BrowserContext斤? 13     private Cookie[] cookies = new Cookie[ 0 ]; // 略擦Cookies 14     private Proxyips proxyip = null ; // 輝念議旗尖IP 15     private Siteusers user = null ; // 輝念議鞠村喘薩 16 17     public Cookie[] getCookies() { 18         return cookies; 19     } 20 21     public   void setCookies(Cookie[] cookies) { 22         this .cookies = cookies; 23     } 24 25     public   void addCookie(Cookie c) { 26         if (cookies != null   && cookies.length > 0 ) { 27             Cookie[] others = new Cookie[cookies.length + 1 ]; 28             System.arraycopy(cookies, 0 , others, 0 , cookies.length); 29             others[others.length - 1 ] = c; 30             cookies = others; 31         } else { 32             cookies = new Cookie[ 1 ]; 33             cookies[ 0 ] = c; 34         } 35     } 36 37     public Proxyips getProxyip() { 38         return proxyip; 39     } 40 41     public   void setProxyip(Proxyips proxyip) { 42         this .proxyip = proxyip; 43         if ( this .proxyip != null 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号