• 【转】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
    通读后,你会有种拔剑四顾心茫然的高手感觉。

    七种武器,打完收工!
  • 相关阅读:
    常见排序算法及其C++实现
    Arc Engine二次开发——弹窗进行属性查询
    Python:Shapefile矢量转化为GeoJSON格式
    Python:GeoJson格式的多边形裁剪Tiff影像并计算栅格数值
    Java调用Python相关问题:指定python环境、传入参数、返回结果
    标准WPS框架下的空间信息处理服务部署方法
    AE开发—利用IQueryFilter接口进行属性查询
    Java调用Javascript、Python算法总结
    百度地图爬虫——获取某区域所有中学附近的网吧数据
    Python中使用面状矢量裁剪栅格影像,并依据Value值更改矢量属性
  • 原文地址:https://www.cnblogs.com/yanff/p/3091644.html
Copyright © 2020-2023  润新知