<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

    主站蜘蛛池模板: 日韩免费电影在线观看| 亚洲免费一级视频| 国产精品亚洲专区无码牛牛| 精品国产日韩久久亚洲| MM1313亚洲精品无码久久| 女人18毛片a级毛片免费| 亚洲精品无码久久千人斩| 亚洲成电影在线观看青青| 亚洲欧美日韩综合久久久久| caoporn成人免费公开| 亚洲黄色免费网址| 亚洲国产天堂久久综合| 4480yy私人影院亚洲| 相泽南亚洲一区二区在线播放| 大香人蕉免费视频75| 337P日本欧洲亚洲大胆精品| 一区二区三区亚洲视频| 亚洲午夜一区二区电影院| 黄色短视频免费看| 97视频热人人精品免费| 亚洲理论电影在线观看| 国产一级片免费看| 亚洲av区一区二区三| 美女被免费网站91色| 亚洲美免无码中文字幕在线| 色噜噜狠狠色综合免费视频| 外国成人网在线观看免费视频| 国产免费看插插插视频| 亚洲色大成网站www永久| 在线a级毛片免费视频| 在线观看亚洲免费视频| 日本一道一区二区免费看| 一区在线免费观看| 国产国产人免费视频成69大陆| 亚洲中文字幕无码av| 无码永久免费AV网站| 午夜在线免费视频| 亚洲成a人无码av波多野按摩| 亚洲国产精华液2020| 在线A级毛片无码免费真人| 久久九九久精品国产免费直播|