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

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

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

    guangnian0412's BLOG

    Java in my life

    常用鏈接

    統計

    積分與排名

    我關注的Blog

    最新評論

    [HttpClient] 執行HTTP GET方法 (from Jakarta Commons Cookbook 11。3)

    問題:
    ??????? 你需要通過HTTP GET方法來獲取信息。

    解答:
    ??????? 創建一個HttpClient實例,并調用以GetMethod對象為參數的executeMethod方法。然后,響應的內容就可以通過一個InputStream,byte[],或者是String來獲得。下面的例子將獲得 http://www.discursive.com /jccook/的內容,并且以一個String來獲得響應。
    ???????
    ?1?import?org.apache.commons.httpclient.HttpClient;
    ?2?import?org.apache.commons.httpclient.HttpException;
    ?3?import?org.apache.commons.httpclient.HttpMethod;
    ?4?import?org.apache.commons.httpclient.methods.GetMethod;
    ?5?
    ?6?HttpClient?client?=?new?HttpClient(?);
    ?7?String?url?=?"http://www.discursive.com/jccook/";
    ?8?HttpMethod?method?=?new?GetMethod(?url?);
    ?9?
    10?try?{
    11?????client.executeMethod(?method?);
    12?
    13?????if(?method.getStatusCode(?)?==?HttpStatus.SC_OK?)?{
    14?????????String?response?=?method.getResponseBodyAsString(?);
    15?????????System.out.println(?response?);
    16?????}
    17?}?catch(?HttpException?he?)?{
    18?????System.out.println(?"HTTP?Problem:?"?+?he.getMessage(?)?);
    19?}?catch(?IOException?ioe?)?{
    20?????System.out.println(?"IO?Exeception:?"?+?ioe.getMessage(?)?);
    21?}?finally?{
    22?????method.releaseConnection(?);
    23?????method.recycle(?);
    24?}
    ???? 這段代碼用HTTP GET方法獲得了
    http://www.discursive.com/jccook/的內容。如果響應的狀態碼是HttpStatus.SC_OK(即200),下列響應將被輸出到控制臺:
    <html>
    ?
    <head>
    ??
    <title>JCCook?Example</title>
    ?
    </head>
    ?
    <body>
    ??
    <h1>Hello?World!</h1>
    ?
    </body>
    </html>


    討論:
    ??????? 注意這段代碼中對異常的處理。執行一個簡單的HTTP GET需要捕捉兩個異常:HttpException和IOException。如果是發生HTTP協議錯誤時,將拋出HttpException異常;如果是發生有關網絡的錯誤時,將拋出IOException異常。這一章后面的例子將會忽略對異常的處理。你應該要知道每一次調用executeMethod()都要用適當的try/catch塊包裹。
    ??????? GetMethod類是HttpMethod接口的一種實現。HttpMethod會被HttpClient所調用。HttpMethod實現類的生命周期是很簡單的:一個HttpMethod實例被創建,然后被HttpClient調用;一旦響應被檢測到以后,HttpMethod釋放連接并被回收使用。當HttpMethod調用了recycle()方法,相當于發送了一個信號給系統表示這個HttpMethod實例可以再被使用。releaseConnection()方法指示HttpClient釋放掉與這個HttpMethod相關聯的連接。無論在使用HttpMethod實例的過程中發生了什么,都要調用releaseConnection()來釋放網絡資源。
    ??????? 一旦HttpClient的executeMethod方法被調用,你可以通過HttpMethod的getStatusCode()方法來獲得響應的狀態碼。這個方法返回一個int,對應于HttpStatus類的public static final 變量。HttpStatus類還包括下面一些常量:SC_OK(200),SC_NOT_FOUND(404),SC_INTERNAL_SERVER_ERROR(500),SC_MOVED_TEMPORARILY (302),SC_UNAUTHORIZED(401)等等。請參照HttpStatus的Javadoc來獲得所有的HTTP狀態列表。當服務器返回一個錯誤的HTTP狀態是,通常還會返回一小段信息。這一小段信息可以通過HttpMethod類的getStatusText()方法獲得。
    ?
    參考:
    ?????? 可以從RFC2616(http://www.zvon.org/tmRFC/RFC2616/Output/index.html)獲得HTTP GET方法的官方定義;
    ?????? 要獲得HTTP 狀態碼的完整列表,請參見 HttpStatus Javadoc? (http://jakarta.apache.org/commons/ httpclient/apidocs/index.html)。

    posted on 2006-04-04 00:18 guangnian 閱讀(3934) 評論(0)  編輯  收藏 所屬分類: Jakarta Commons

    主站蜘蛛池模板: 亚洲色四在线视频观看| 亚洲gv猛男gv无码男同短文| 久久水蜜桃亚洲av无码精品麻豆| 二级毛片免费观看全程| 免费在线观看污网站| 免费视频成人国产精品网站| 国产成人在线观看免费网站| 国产成人综合亚洲| 亚洲А∨精品天堂在线| 免费手机在线看片| 国产亚洲精品自在久久| 国产成人久久AV免费| 亚洲精品国产肉丝袜久久| 在线永久免费的视频草莓| 国产AV旡码专区亚洲AV苍井空| 一个人看www在线高清免费看 | 青青免费在线视频| 无码不卡亚洲成?人片| 羞羞漫画在线成人漫画阅读免费 | 日本牲交大片免费观看| 免费国产va视频永久在线观看| 亚洲中文字幕丝袜制服一区| 国产免费无码一区二区 | 无码欧精品亚洲日韩一区夜夜嗨 | 人人狠狠综合久久亚洲| 国产精品亚洲美女久久久| 成全动漫视频在线观看免费高清版下载| 国产l精品国产亚洲区在线观看| 91禁漫免费进入| 亚洲国产精品无码久久98| ZZIJZZIJ亚洲日本少妇JIZJIZ| 香港a毛片免费观看 | 亚洲色偷偷偷鲁综合| 国产香蕉免费精品视频| 国产成人综合久久精品亚洲| 国产亚洲人成网站在线观看不卡| 亚洲最大免费视频网| 免费无码午夜福利片| 亚洲福利视频一区二区三区| 精品免费国产一区二区| 成人电影在线免费观看|