2014年11月25日火曜日

AndroidでJSOUPを使う。その1(基本的な使い方 GET, POST, クッキーについて)

SYSTEM_KDです。

AndroidでHTMLをパースしたり、http通信時に便利なライブラリ「JSOUP(JSONじゃないよ)についての使い方を自分の備忘録をかねてまとめたいと思います。

ネット上に記事があるようで、やりたいこについてのってなかったのでまとめ。

まず、JSOUPを利用するために必要なライブラリを用意します。
必要ならライブラリは、「JSOUPのjar」と「HttpClient」になります。
それぞれ、下記からダウンロードします。

HttpClient
※Binaryのzipかtar.gzあたりをダウンロード
※2014/11/24時点の最新バージョンは 4.3.6 でした

JSOUPのjar
※2014/11/24時点の最新バージョンは 1.8.1 でした。

ライブラリをダウンロードしたら、必要なjarだけとりだします。
AndroidでJSOUPを利用するために必要なライブラリは次になります。

・jsoup-1.8.1.jar
・httpcore-4.3.3.jar
・httpmime-4.3.6.jar

あとは、上記のjarを利用するAndroidプロジェクトの「libs」にコピーすれば準備OK.

では、早速利用してみたいと思いますが、全体的なソースは省きます。
(大まかな部分はネット上にまとめられておりますので、JSOUPの使い方だけに絞ります)

まず、GETから

// Connectionを作成
Connection conn = Jsoup.connect("URLを指定");
Document doc = conn.get();

これだけです。これでHTTPへリクエスト飛ばせます。
あとは、DocumentからJQueryライクにHTMLを扱えます!

次に、POST

// Connectionを作成
Connection conn = Jsoup.connect("URLを指定");
// POSTするパラメータを設定
HashMap<String, String> param = new HashMap<String, String>();
// nameとageをPOSTする
param.put("name", "SYSTEM_KD");
param.put("age", "30");
// post
Document doc = conn.post();

以上です。これで、POSTができます。
あとは、GETと同様にDocumentからHTMLを扱います。

と、ここまでは、探せばネット上にあるかと思います。
まぁ、これだけあれば色々できるのですが、もう一歩踏み込もうとすると、とたんに情報が少なくなる気がします。

と言うことで、ちょっと踏み込んで、Cookieを利用する場合について記載したいと思います。
POSTを使う場合等は、色々やっていくうちにCookieを利用したくなるかと思います。

では、Cookieの取得から

// Connectionを作成
Connection conn = Jsoup.connect("URLを指定");
// Cookieを取得
Map<String, String> cookies = conn.execute().cookies();

もったいぶりましたが、あっさり取れます。

反対に、Cookieを設定する場合
(上記で取得した値を設定すると想定)

// Connectionを作成
Connection conn = Jsoup.connect("URLを指定");
// Cookieを設定
for (Map.Entry<String, String> cookie : cookies.entrySet()) {
conn.cookie(cookie.getKey(), cookie.getValue());
}

設定の方も簡単におこなえます。
これで、基礎的な部分は網羅できるかと思います。

次回は、その2 ベーシック認証がかかっている状態での、GETとPOSTについて書きたいと思います。

1 件のコメント:

  1. 非常に為になりました。okhttpと迷ってましたがjsoupの方が簡単そうですね

    返信削除