<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    風行天下

    JAVA太極
    posts - 4, comments - 10, trackbacks - 0, articles - 55
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Jakarta Commons HttpClient

    Posted on 2005-04-04 11:18 風太少 閱讀(739) 評論(0)  編輯  收藏
    SECTION 01 HttpClient 總覽

    Hyper-Text Transfer Protocol (HTTP) 是現(xiàn)在網(wǎng)絡上最通行的通訊協(xié)議, 隨著 Webservice 的技術快速發(fā)展, 也讓許多的應用程序結合 HTTP 擴展更大的功能, 或許你會說 java.net 不是已經有基本的存取 HTTP 的 method 了, 為何還要有這個 commons 的項目呢, 請容許我慢慢說明 ~~


    binary 下載處 http://jakarta.apache.org/builds/jakarta-commons/release/commons-httpclient/v2.0/

    source 下載處 http://www.apache.org/dist/jakarta/commons/httpclient/source/


    SECTION 02 特色

    是因為他的特色..... 有許多是 java.net.* 沒有提供的, 或者自己要實現(xiàn)的. 不如就直接采用 commons-httpclient.
    • 使用 Pure Java 開發(fā)標準的 HTTP v1.0 及 v1.1
    • 實現(xiàn)所有的 HTTP methods (GET, POST, PUT, DELETE,HEAD, OPTIONS, and TRACE)
    • 支持 HTTPS 的協(xié)議
    • 支持 proxies 的各種情況
    • 利用 Multi Form 上傳文件
    • 支持認證機制
    • 可以設置最大連結數(shù)量
    • 自動的 cookie 處理模式
    • Request 及 Response 最佳化處理
    • 支持 HTTP 1.0 KeepAlive 聯(lián)機模式及 1.1 的 persistance 保存狀態(tài)
    • 直接存取服務器送來的 response code 及 header
    • 能夠設置連結超時
    • 實現(xiàn) Command Pattern 允許去平行處理及有效重復使用連結.
    • 這個是開放源碼的



    SECTION 03 依循自

    Commons-HttpClient 是遵循了下面的 spec ( Internet Engineering Task Force (IETF) )
    • RFC1945Hypertext Transfer Protocol -- HTTP/1.0
    • RFC2616Hypertext Transfer Protocol -- HTTP/1.1
    • RFC2617HTTP Authentication: Basic and Digest Access Authentication
    • RFC2109HTTP State Management Mechanism (Cookies)
    • RFC2396Uniform Resource Identifiers (URI): Generic Syntax
    • RFC1867Form-based File Upload in HTML



    SECTION 04 與其它的 HttpClient 比較

    此來源出自 http://www.nogoop.com/product_16.html#compare
    nogoop Sun innovation Jakarta
    Features
    cookies X X
    plug compatible X X X [partial]
    true request output stream X X
    true response input stream X X X
    connection keep alive X X X X
    connection pool throttling X X
    connection/request timeout X X X
    idle connection timeout X
    pipelining of requests X
    SSL X X X X
    basic authentication X X X X
    digest authentication X X X X
    NTLM authentication X X
    proxy authentication X X X X
    Support
    minimum JRE version 1.2 1.0 1.2 1.2
    price $399 free free free
    source available X X X
    diagnostic tracing X X X
    actively supported X X X
    fix turnaround fast slow none medium
    license purchase Sun JRE LGPL Apache



    SECTION 05 簡單范例

    基本上 HttpClient 需要 commons-logging, 所以你要在 classpath 設置這兩個 jar 文件, 接著你要了解 HTTP 通訊的方式, 標準步驟如下..
    1. 建立 HttpClient 的 instance ( HttpClient client = new HttpClient(); )
    2. 建立 HttpClient instance 要使用的 method ( 例如 GET/POST 等等 連結到一個 URL , HttpMethod method = new GetMethod("http://www.apache.org/"); )
    3. 告訴 HttpClient 去執(zhí)行這個訊息 ( statusCode = client.executeMethod(method); )
    4. 得到 Server 端的響應 ( byte[] responseBody = method.getResponseBody(); )
    5. 結束這個連結 ( method.releaseConnection(); )
    6. 處理這個響應數(shù)據(jù) ( System.err.println(new String(responseBody)); )
    
    import org.apache.commons.httpclient.*;
    import org.apache.commons.httpclient.methods.*;
    import java.io.*;
    
    public class HttpClientTutorial {
      
      private static String url = "http://www.apache.org/";
    
      public static void main(String[] args) {
    	// Create an instance of HttpClient.
    	HttpClient client = new HttpClient();
    
    	// Create a method instance.
    	HttpMethod method = new GetMethod(url);
    
    	// Execute the method.
    	int statusCode = -1;
    	int attempt = 0;
    	// We will retry up to 3 times.
    	while (statusCode == -1 && attempt < 3) {
    	  try {
    		// execute the method.
    		statusCode = client.executeMethod(method);
    	  } catch (HttpRecoverableException e) {
    		System.err.println(
    		  "A recoverable exception occurred, retrying." + 
    		  e.getMessage());
    	  } catch (IOException e) {
    		System.err.println("Failed to download file.");
    		e.printStackTrace();
    		System.exit(-1);
    	  }
    	}
    	// Check that we didn't run out of retries.
    	if (statusCode == -1) {
    	  System.err.println("Failed to recover from exception.");
    	  System.exit(-2);
    	}
    
    
    	// Read the response body.
    	byte[] responseBody = method.getResponseBody();
    
    	// Release the connection.
    	method.releaseConnection();
    
    	// Deal with the response.
    	// Use caution: ensure correct character encoding and is not binary data
    	System.err.println(new String(responseBody));
      }
    }
    

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 黄视频在线观看免费| 18勿入网站免费永久| 亚洲欧洲在线观看| 在线成人a毛片免费播放| 青青久久精品国产免费看| 亚洲成人在线电影| 无码视频免费一区二三区| 中文字幕在线免费视频| 亚洲人成在线精品| 亚洲七七久久精品中文国产| 麻豆成人久久精品二区三区免费| 精品国产免费一区二区三区| 亚洲熟伦熟女新五十路熟妇| 2021精品国产品免费观看| 在线亚洲精品视频| 精品亚洲aⅴ在线观看| 国产一卡二卡≡卡四卡免费乱码| 在线精品亚洲一区二区| 免费一级毛片在线播放| 2020久久精品国产免费| 美女巨胸喷奶水视频www免费| 四虎影视www四虎免费| a级毛片视频免费观看| 在线aⅴ亚洲中文字幕| 久久亚洲国产精品五月天| 国产免费av片在线播放| 日韩免费一区二区三区在线| 中国一级毛片免费看视频| 亚洲AV无码无限在线观看不卡| 扒开双腿猛进入爽爽免费视频 | 久久久久国色AV免费看图片| 美美女高清毛片视频黄的一免费 | 亚洲五月六月丁香激情| 亚洲 国产 图片| 成人免费a级毛片| 最刺激黄a大片免费网站| 91视频免费网站| 九九九精品视频免费| 狼人大香伊蕉国产WWW亚洲| 波多野结衣亚洲一级| 亚洲理论片在线中文字幕|