Apache Common HttpClient 使用之七种武器

本文通过六个生动的比喻,详细介绍了如何使用Java的HttpClient进行HTTP请求处理,包括GET/POST请求、HTTPS支持、Cookies管理、POST参数设置及代理配置等关键技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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



2.孔雀翎之支持https

如何支持https?

java 代码
  1. static{
  2. Protocoleasyhttps=newProtocol("https",newEasySSLProtocolSocketFactory(),443);
  3. Protocol.registerProtocol("https",easyhttps);
  4. }


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

3.多情环之cookies
常道人老多情,其实是记忆太多,所以情之所至,正如cookies甜心,无论你走到那,总把你牵挂:

java 代码
  1. HttpClienthttpclient=newHttpClient();
  2. httpclient.getParams().setCookiePolicy(CookiePolicy.RFC_2109);//RFC_2109是支持较普遍的一个,还有其他cookie协议
  3. HttpStateinitialState=newHttpState();
  4. Cookiecookie=newCookie();
  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("Presentcookies:");
  4. for(inti=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. PostMethodpostMethod=newPostMethod("http://www.saybot.com/postme");
  2. NameValuePair[]postData=newNameValuePair[2];
  3. postData[0]=newNameValuePair("武器","枪");
  4. postData[1]=newNameValuePair("什么枪","神枪");
  5. postMethod.addParameters(postData);
  6. ...//出枪吧



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

代理,非常重要,尤其在局域网横行的年头,没有代理,你在公司上不了QQ,没有代理,google不了网页快照,代理之威,可比七星碧玉刀,无刀,在局域网和开发当中,一切白搭:

java 代码
  1. HttpClienthttpclient=newHttpClient();
  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,newMyProxyCredentialsProvider());
  8. httpClient.getState().setProxyCredentials(
  9. newAuthScope("192.168.0.1",
  10. AuthScope.ANY_PORT,//任意端口哦,可要小心
  11. AuthScope.ANY_REALM),//任意域哦,可要小心
  12. newUsernamePasswordCredentials("username",//proxy的用户名
  13. "password"));//proxy的密码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值