因某人需要國家國旗的資料庫,所以寫了一支簡單的parser,除了PostMethod之外,還可以使用GetMethod,曾遇到過PostMethod抓不了,改用GetMethod就可以
因為只有要抓一次而已,所以寫的很簡略,沒有做太多連線的判斷

需commons-codes.jar、commons-httpclient.jar、commons-io.jar、commons-logging.jar、commons-lang.jar

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.lang.StringUtils;

private void parserWeb(){
    String url = "";   //要擷取的網址
    HttpClient client = new HttpClient();
    PostMethod method = null;
    try{
       method = new PostMethod(url);
       method.setRequestHeader("Content-type","text/xml; charset=utf-8");
       client.executeMethod(method);
        if(method.getStatusCode() == HttpStatus.SC_OK){
            //抓回來的原始檔字串,除了傳回字串外,也有傳回Stream及byte[],依需要而不同囉
            String s = method.getResponseBodyAsString();

            // TODO 這裡就開始做parser的動作啦!這次的重點在於如何使用HttpClient,所以解字串動作就不說了,可以用substring + indexOf將字串拆解,也可以使用正規表示式來取得想要的資料
       }
    }catch(Exception e){
        e.printStackTrace();
    }finally{
        //利用完後,記得要關閉連線
        if (method != null) {
            method.releaseConnection();
        }
    }
}
arrow
arrow
    全站熱搜

    momokao 發表在 痞客邦 留言(0) 人氣()