快速业务通道

模拟站点的自动登录发帖回复 - 编程入门网

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

模拟站点的自动登录发帖回复

时间:2011-01-06 javaeye eimhee

本文采用 HttpClient 来模拟站点的登录发帖回复,介绍 HttpClient 的用法和常见问题的解决方案。

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 类图如下:

方法调用的时序图如下:

庁亭嫋泣議徭強鞠村窟愉指鹸(2)

扮寂:2011-01-06 javaeye eimhee

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

BrowserContext 議旗鷹泌和?

Java旗鷹

/** */ /**   * 箝誓匂序殻貧和猟    */   public  class BrowserContext   {     private HttpClient client; // 廣吭?耽倖嫋泣才耽倖喘薩?斤哘匯倖汽鏡議BrowserContext斤?     private Cookie[] cookies = new Cookie[ 0 ]; // 略擦Cookies     private Proxyips proxyip = null ; // 輝念議旗尖IP     private Siteusers user = null ; // 輝念議鞠村喘薩     public Cookie[] getCookies() {       return cookies;     }     public  void setCookies(Cookie[] cookies) {       this .cookies = cookies;     }     public  void addCookie(Cookie c) {       if (cookies != null  && cookies.length > 0 ) {         Cookie[] others = new Cookie[cookies.length + 1 ];         System.arraycopy(cookies, 0 , others, 0 , cookies.length);         others[others.length - 1 ] = c;         cookies = others;       } else {         cookies = new Cookie[ 1 ];         cookies[ 0 ] = c;       }     }     public Proxyips getProxyip() {       return proxyip;     }     public  void setProxyip(Proxyips proxyip) {       this .proxyip = proxyip;       if ( this .proxyip != null ) {         client.getHostConfiguration().setProxy(proxyip.getIp(),proxyip.getPort());         client.getParams().setAuthenticationPreemptive( true );         // 泌惚旗尖俶勣畜鷹刮屬?宸戦譜崔喘薩兆畜鷹          // client.getState().setProxyCredentials(AuthScope.ANY, new U

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号