Javaと情熱のあいだ

カステラとドーナツと珈琲

HttpClient 4.0-beta2を使う

HttpClient 4.0-beta2が出てたので使ってみることに
Commons HttpClient 3.1とはまったく別物になってるぽい。
サンプルはGoogle Suggestの結果を取得します。


材料はこちら
HttpCore 4.0 (GA)
HttpClient 4.0-beta2
Commons Logging

public class HttpGetExample {

    /**
     * URI
     */
    private static final String SUGGETS_URI =
        "http://www.google.co.jp/complete/search?hl=ja&client=suggest&js=true&q=";

    /**
     *
     * 実行
     * @throws Exception 例外
     */
    @Override
    public void execute() throws Exception {

        final HttpClient client = new DefaultHttpClient();

        final HttpGet get = new HttpGet(SUGGETS_URI + "ほげほげ");

        final HttpResponse response = client.execute(get);

        final HttpEntity entity = response.getEntity();

        final List<SuggestResonse> list =
            getSuggestResonseList(EntityUtils.toString(entity));

        for(final SuggestResonse sr : list) {
            System.out.println(sr.getWord() + ":" + sr.getScore());
        }

        get.abort();
    }

    /**
     *
     * サジェストの結果を取得します
     * @param stringResponse レスポンス文字列
     * @return
     */
    private List<SuggestResonse> getSuggestResonseList(final String stringResponse) {

        final String[] responses = StringUtils.split(stringResponse, "\"");

        final List<SuggestResonse> result = new ArrayList<SuggestResonse>();

        for (int i = 3 ; i <= responses.length - 2; i = i + 4) {
            SuggestResonse sr = new SuggestResonse();

            sr.setWord(responses[i]);

            sr.setScore(StringUtils.remove(
                    StringUtils.substringBefore(responses[i + 2]," "), ","));

            result.add(sr);
        }

        return result;
    }

    /**
     *
     * <HR>
     * <P>
     *  ■モジュール名 <BR>
     * <BLOCKQUOTE>
     *      SuggestResonse.java <BR>
     * </BLOCKQUOTE>
     * <P>
     *  ■クラス仕様 <BR>
     * <BLOCKQUOTE>
     *      SuggestResonseクラスはサジェストの結果クラスです。<BR>
     * </BLOCKQUOTE>
     * <P>
     * <HR>
     * <P>
     */
    public static class SuggestResonse {
        /**
         * ワード
         */
        private String word;

        /**
         * スコア
         */
        private String score;

        /**
         *
         * ワードを取得します
         * @return ワード
         */
        public String getWord() {
            return word;
        }

        /**
         *
         * ワードを設定します
         * @param word ワード
         */
        public void setWord(String word) {
            this.word = word;
        }

        /**
         *
         * スコアを取得します
         * @return スコア
         */
        public String getScore() {
            return score;
        }

        /**
         *
         * スコアを設定します
         * @param score スコア
         */
        public void setScore(String score) {
            this.score = score;
        }
    }
}

実行結果は、こちら

ほげほげとは:372000
ほげほげ wiki:83400
ほげほげまん:24100
ほげほげたらたら:3160
ほげほげ ゲーム:111000
ほげほげ隊員:3320
ほげほげ画廊:1810
ほげほげtown:4290
ほげほげ 方言:8580
ほげ捕鯨:11100