ZT文萃

          本博不原創(chuàng),轉(zhuǎn)帖自己感興趣那些事人物,什么入眼貼什么,隨心所欲。
          posts - 93, comments - 5, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Apache Common HttpClient使用之七種武器

          Posted on 2014-02-26 18:10 ZT文萃 閱讀(287) 評論(0)  編輯  收藏 所屬分類: 中間件
          http://laohuang.iteye.com/blog/55613

          1.拳頭之Get/Post
          拳頭是最基本的一重武器,也是最重要的,好比練武之人必須先扎穩(wěn)馬步。

          java 代碼
           
          1. HttpClient httpclient=new HttpClient();//創(chuàng)建一個客戶端,類似打開一個瀏覽器  
          2. GetMethod getMethod=new GetMethod("http://www.blablabla.com");//創(chuàng)建一個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. }  

          在執(zhí)行具體的http method之前,暗中將https協(xié)議注冊一把,如孔雀翎暗藏玄機,斃敵于無形。記住,官方的binary發(fā)行版本沒有ssl的contribute包,方法一是下載源代碼版本來打造你的孔雀翎。

          3.多情環(huán)之cookies
          常道人老多情,其實是記憶太多,所以情之所至,正如cookies甜心,無論你走到那,總把你牽掛:
          java 代碼
           
          1. HttpClient httpclient=new HttpClient();  
          2. httpclient.getParams().setCookiePolicy(CookiePolicy.RFC_2109);//RFC_2109是支持較普遍的一個,還有其他cookie協(xié)議  
          3. HttpState initialState = new HttpState();  
          4. Cookie cookie=new Cookie();  
          5. cookie.setDomain("www.balblabla.com");  
          6. cookie.setPath("/");  
          7. cookie.setName("多情環(huán)");  
          8. cookie.setValue("多情即無情");  
          9. initialState.addCookie(cookie);  
          10. httpclient.setState(initialState);  
          11. ...  


          4.離別鉤之解構(gòu)cookies

          多情環(huán)的反面即離別鉤,鉤出,敵之身體某個部件即要與身體別離,端的是無情:
          java 代碼
           
          1. ...//執(zhí)行了某些get/post方法后  
          2. Cookie[] cookies = httpclient.getState().getCookies();  
          3. System.out.println("Present cookies: ");  
          4. for (int i = 0; i < cookies.length; i++) {//循環(huán)結(jié)構(gòu)零部件  
          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參數(shù)
          槍,長兵器之王,諸多名將均使一桿或金或銀命名的名槍,比如岳飛。post方法在提交參數(shù)對時,猶如靈蛇出洞:
          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)

          代理,非常重要,尤其在局域網(wǎng)橫行的年頭,沒有代理,你在公司上不了QQ,沒有代理,google不了網(wǎng)頁快照,代理之威,可比七星碧玉刀,無刀,在局域網(wǎng)和開發(fā)當(dāng)中,一切白搭:
          java 代碼
           
          1. HttpClient httpclient=new HttpClient();  
          2. httpClient.getHostConfiguration().setProxy("192.168.0.1", 9527);  
          3. httpClient.getParams().setAuthenticationPreemptive(true);//重要!!!告訴httpclient,使用搶先認(rèn)證,否則你會收到“你沒有資格”的惡果  
          4. /* 
          5.   這一步也至關(guān)重要,MyProxyCredentialsProvider實現(xiàn)了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網(wǎng)友寫的小葵花寶典筆記:www.cnjm.net/tech/article1155.html
          通讀后,你會有種拔劍四顧心茫然的高手感覺。

          七種武器,打完收工!
          主站蜘蛛池模板: 汝城县| 神木县| 富宁县| 利川市| 时尚| 资中县| 寿阳县| 房山区| 嵩明县| 桃园市| 恩平市| 博乐市| 临高县| 中西区| 介休市| 营口市| 忻城县| 建宁县| 玉门市| 西青区| 阳曲县| 安宁市| 平舆县| 利津县| 陆川县| 益阳市| 鲁甸县| 衡南县| 灌阳县| 常宁市| 如东县| 夏河县| 常山县| 奉节县| 前郭尔| 曲靖市| 阜康市| 丰县| 竹山县| 巴青县| 临潭县|