`

Apache Common HttpClient使用之七种武器

阅读更多
1.拳头之Get/Post
拳头是最基本的一重武器,也是最重要的,好比练武之人必须先扎稳马步。

java 代码
 
  1. HttpClient httpclient=new HttpClient();//创建一个客户端,类似打开一个浏览器  
  2. GetMethod getMethod=new GetMethod("http://www.blablabla.com");//创建一个get方法,类似在浏览器地址栏中输入一个地址  
  3. int statusCode=httpclient.executeMethod(getMethod);//回车——出拳!  
  4. System.out.println("response=" + getMethod.getResponseBodyAsString());//察看拳头命中情况,可以获得的东西还有很多,比如head, cookies等等  
  5. getMethod.releaseConnection();//释放,记得收拳哦  


2.孔雀翎之支持https

如何支持https?
java 代码
 
  1. static{  
  2.     Protocol easyhttps = new Protocol("https"new EasySSLProtocolSocketFactory(), 443);  
  3.     Protocol.registerProtocol("https", easyhttps);  
  4. }  

在执行具体的http method之前,暗中将https协议注册一把,如孔雀翎暗藏玄机,毙敌于无形。记住,官方的binary发行版本没有ssl的contribute包,方法一是下载源代码版本来打造你的孔雀翎。

3.多情环之cookies
常道人老多情,其实是记忆太多,所以情之所至,正如cookies甜心,无论你走到那,总把你牵挂:
java 代码
 
  1. HttpClient httpclient=new HttpClient();  
  2. httpclient.getParams().setCookiePolicy(CookiePolicy.RFC_2109);//RFC_2109是支持较普遍的一个,还有其他cookie协议  
  3. HttpState initialState = new HttpState();  
  4. Cookie cookie=new Cookie();  
  5. cookie.setDomain("www.balblabla.com");  
  6. cookie.setPath("/");  
  7. cookie.setName("多情环");  
  8. cookie.setValue("多情即无情");  
  9. initialState.addCookie(cookie);  
  10. httpclient.setState(initialState);  
  11. ...  


4.离别钩之解构cookies

多情环的反面即离别钩,钩出,敌之身体某个部件即要与身体别离,端的是无情:
java 代码
 
  1. ...//执行了某些get/post方法后  
  2. Cookie[] cookies = httpclient.getState().getCookies();  
  3. System.out.println("Present cookies: ");  
  4. for (int i = 0; i < cookies.length; i++) {//循环结构零部件  
  5.     System.out.println(" - " + cookies[i].toExternalForm());  
  6.     System.out.println(" - domain=" + cookies[i].getDomain());  
  7.     System.out.println(" - path=" + cookies[i].getPath());  
  8.     ...            
  9. }  


5.霸王抢之post参数
枪,长兵器之王,诸多名将均使一杆或金或银命名的名枪,比如岳飞。post方法在提交参数对时,犹如灵蛇出洞:
java 代码
 
  1. PostMethod postMethod = new PostMethod("http://www.saybot.com/postme");  
  2. NameValuePair[] postData = new NameValuePair[2];  
  3. postData[0] = new NameValuePair("武器""枪");  
  4. postData[1] = new NameValuePair("什么枪""神枪");  
  5. postMethod.addParameters(postData);  
  6. ...//出枪吧  


6.七星碧玉刀之支持代理(proxy)

代理,非常重要,尤其在局域网横行的年头,没有代理,你在公司上不了QQ,没有代理,google不了网页快照,代理之威,可比七星碧玉刀,无刀,在局域网和开发当中,一切白搭:
java 代码
 
  1. HttpClient httpclient=new HttpClient();  
  2. httpClient.getHostConfiguration().setProxy("192.168.0.1"9527);  
  3. httpClient.getParams().setAuthenticationPreemptive(true);//重要!!!告诉httpclient,使用抢先认证,否则你会收到“你没有资格”的恶果  
  4. /* 
  5.   这一步也至关重要,MyProxyCredentialsProvider实现了org.apache.commons.httpclient.auth.CredentialsProvider接口, 
  6.   返回代理的credential(username/password)*/  
  7. httpClient.getParams().setParameter(CredentialsProvider.PROVIDER, new MyProxyCredentialsProvider());  
  8. httpClient.getState().setProxyCredentials(  
  9.     new AuthScope("192.168.0.1",  
  10.         AuthScope.ANY_PORT, //任意端口哦,可要小心  
  11.         AuthScope.ANY_REALM),//任意域哦,可要小心  
  12. new UsernamePasswordCredentials("username",//proxy的用户名  
  13.                         "password"));//proxy的密码  

...

7.长生剑之天下第一
看httpclient的官方文档:jakarta.apache.org/commons/httpclient/userguide.html
看Hilton网友写的小葵花宝典笔记:www.cnjm.net/tech/article1155.html
通读后,你会有种拔剑四顾心茫然的高手感觉。

七种武器,打完收工!
分享到:
评论
21 楼 yl23250 2014-06-27  
牛逼
20 楼 wukunlsy 2013-12-20  
写得非常好!
19 楼 cuidiwhere 2013-12-12  
”记得收拳噢“,楼主很幽默。
18 楼 bin_1715575332 2013-08-30  
哥们武侠迷啊。。。
17 楼 zhengjiong 2013-05-16  
16 楼 uzoice 2012-06-04  
故弄玄虚,雕虫小技
15 楼 coolcooldool 2012-02-13  
楼主你写得真是太好了,支持!
14 楼 mxchenry 2012-02-12  
13 楼 zhuchao_ko 2012-02-01  
12 楼 sxhyll 2011-09-29  
哥你太有才了,不顶不行!
11 楼 lxtkong-029 2011-07-29  
非常感谢,写的太好了
10 楼 jssay 2011-06-13  
说的很好很形象,受教了!
9 楼 rmn190 2011-01-31  
呵呵 , 楼主写的很形象啊, 建议以这些类为主角来写一个剧本, 哈哈。
8 楼 peijunlin2008 2009-08-23  
你好,利用get方式发送请求的时候URL编码问题怎么解决?希望举出一个完整的Demo.
再次感谢!
7 楼 suciudeman 2009-06-02  
武侠看多了,呵呵
6 楼 nbkangta 2009-03-31  
写的真好~~~~
5 楼 selang3879 2009-03-09  
留名。。
再慢慢看.
4 楼 xianglei 2008-12-11  
哥们武侠小说看的很多吧呵呵
3 楼 jmu 2008-12-10  

支持支持
2 楼 kimfly 2008-04-23  
请教下MyProxyCredentialsProvider是怎么实现的

相关推荐

    commons-httpclient-3.0.jar JAVA中使用HttpClient可以用到

    《JAVA中使用HttpClient:commons-httpclient-3.0.jar详解》 在JAVA开发中,进行HTTP请求时,Apache的HttpClient库是一个不可或缺的工具。本文将深入解析`commons-httpclient-3.0.jar`,它是HttpClient的一个重要...

    apache commonshttpclient源码

    真正的 org.apache.commons.httpclient.source 源码

    HttpClient API CHM

    HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java ...HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient,

    httpclient使用帮助类

    httpclient是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,本文档提供使用httpclient的使用方法

    apache-common最全的源码

    "apache-common最全的源码" 提供了该项目的完整源代码,这对于开发者来说是一份宝贵的资源,可以深入理解其实现机制,学习优秀的编程实践,以及进行二次开发或定制。 Apache Commons 包含了多个模块,每个模块都有...

    apache-common最全的jar包

    Apache Commons 是一个由 Apache 软件基金会维护的开源项目集合,它提供了许多实用的 Java 类库,解决了在开发过程中常见的问题,提升了代码的可复用性和效率。这个压缩包包含了一些 Apache Commons 的核心模块,让...

    HTTPClient组件的应用

    3. Commons-logging日志组件:commons-logging.jar,HttpClient也使用了这个库进行日志记录,可以从Apache Jakarta common的子项目logging下载。 将这些库文件放入项目的lib目录,并添加到classpath中,才能正确...

    HttpClient使用示例教程

    HttpClient是Apache Jakarta Common项目下的一个子项目,专为Java开发者设计,用于提供高效、功能丰富的HTTP客户端编程工具包。它支持HTTP协议的最新版本和建议,使得开发人员能够轻松地发送HTTP请求,同时方便测试...

    httpclient4.5.5.chm

    新出炉的httpclient4.5.5.chm文档,放心下载,绝对不是挂羊头卖狗肉。 org.apache.http.auth Client HTTP authentication APIs. org.apache.http.auth.params Deprecated. org.apache....

    Apache Commons官网下的jar包

    Apache Commons 是一个由...Apache Commons 的强大之处在于它的模块化设计,允许开发者根据需求选择需要的组件,而不必引入不必要的依赖。同时,由于这些库经过广泛的测试和社区维护,它们的稳定性和可靠性得到了保证。

    httpClient4.1入门教程.pdf

    在本文档中,首先对HttpClient进行了简介,提到了它属于Apache Jakarta Common项目下的子项目,强调了其功能丰富和高效的特点。接着,文档列出了HttpClient的基本功能和特性,包括实现了HTTP协议的多个版本,支持...

    apache common系列包的作用以及帮助文档

    `Apache common包的作用.docx` 文件很可能包含了对上述各个组件的详细介绍和使用案例。而 `API.rar` 文件则可能是Apache Commons 的API文档,解压后可以查看详细的类和方法说明,这对于理解和使用Apache Commons ...

    commons-httpclient可用包

    "common包"可能是指Apache Commons项目,这是一系列小型Java库的集合,提供了各种通用功能,例如字符串处理、日期时间操作、I/O流处理等,而HttpClient是其中的一个组件,专注于网络通信。 标签"commons"进一步确认...

    commons-httpclient-3.1.jar

    HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持...HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。

    httpclient4.2.1

    HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java ...HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。

    httpclient相关的jar包

    HTTP 协议可能是现在 Internet 上...HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。现在HttpClient最新版本为 HttpClient 4.2 (GA)

    httpClient4.1入门教程.

    HttpClient 是一个强大的开源 Java 客户端 HTTP 框架,源自 Apache Jakarta Common。它为开发者提供了高效、灵活且功能丰富的工具,以实现与 HTTP 服务器的交互。HttpClient 支持 HTTP/1.1 和部分 HTTP/2 规范,同时...

Global site tag (gtag.js) - Google Analytics