Ajax Webアプリケーション奮闘記 〜関西温泉マップ〜

Ajax Webアプリケーション作成にあたり、技術的メモや奮闘内容、未解決問題等を掲載していきます。 もちろん、関西温泉マップはβ版なので無料でご利用いただけます。


私おすすめのレンタルサーバー | ここが便利!レノボWeb広告限定ストア

JavaアプリケーションでXML-RPCよりFC2ブログ情報を取得してみる

サイトにアクセスしないであるブログの情報を取得したいなら、RSSからリーダーに読み込ませて取得したりさまざまなやり方があると思いますが、今回は、XML-RPCを使ってJavaアプリケーションから取得してみたいと思います。

まぁ、XML-RPCを使う目的は、後々Javaアプリケーションからブログ記事が投稿してみたいからです。

まず環境を整えます。
【環境】
・Windows XP SP 2
・Eclipse SDKバージョン: 3.2.0
・JRE:1.6.0_03
・外部JAR:xmlrpc-2.0.jar

上記外部JARは以下より取得しました。
ws-xmlrpc - Apache XML-RPC

どれをダウンロードすればよいか分かり辛かったので、分かりやすい2.0をダウンロードしました。(現状最新は3.1)

環境が整ったら、以下のソースを記載します。
※Javaプログラミングはあまり経験が無いので、コードの解説はあまりできませんし、動作確認のみしているので、参考程度にご利用ください。
[XmlRpcTest.java]
import java.util.Iterator;
import java.util.Vector;
import java.util.Hashtable;
import org.apache.xmlrpc.XmlRpc;
import org.apache.xmlrpc.XmlRpcClient;

public class XmlRpcTest {
private final static int GET_ENTRYCNT_MAX = 10; // 記事取得件数

private static String getBlogid(XmlRpcClient client, String username, String password)
throws Exception {
Vector params = new Vector();
params.add("appkey"); // appkey は何でもよいらしい
params.add(username);
params.add(password);

// ブログリストを取得
Object result = client.execute("metaWeblog.getUsersBlogs", params);

if (result instanceof Boolean) { // ブログリストが取得できなかった場合、false が返る
throw new Exception("can't get UsersBlogs");
}

// 1 件目のブログの blogid を返す
return (String) ((Hashtable) ((Vector) result).get(0)).get("blogid");
}

public void TestGetRecentPosts(String url, String username, String password) throws Exception {

XmlRpc.setDefaultInputEncoding("UTF-8");
XmlRpcClient client = new XmlRpcClient(url);

// blogid を取得する。
String blogid = getBlogid(client, username, password);

Vector params = new Vector();
params.add(blogid);
params.add(username);
params.add(password);
params.add(new Integer(GET_ENTRYCNT_MAX));

// 記事を取得する。
Vector result = (Vector) client.execute("metaWeblog.getRecentPosts", params);

if (result.size() == 0) { // 記事が取得できなかった場合
throw new Exception("can't get RecentPosts");
}

Iterator i = result.iterator();
while (i.hasNext()) { // 記事の数だけループ
Hashtable hash = (Hashtable) i.next();
System.out.println((String) hash.get("title")); // タイトルを表示
}
}
}


XML-RPCへのAPIは下記を参考ください。
Movable Type 3.3 マニュアル - XML-RPC API

上記クラスの呼び出しサンプルは以下のようになります。

[MainTest.java]
public static void main(String[] args) throws Exception {

String EndUrl = "http://blog.fc2.com/xmlrpc.php";

XmlRpcTest xrpct = new XmlRpcTest();
xrpct.TestGetRecentPosts(EndUrl, (ユーザID), (パスワード));
}


変数EndUrlに設定しているURLはFC2のXML-RPC用URLです。一律このURLに対してのアクセスで各ブログへのアクセスが可能です。ユーザIDはログインユーザIDです。FC2の場合メールアドレスになると思います。パスワードはログイン時のパスワードを設定します。

上記を実行すると、最近投稿した記事10件のタイトルを表示します。

[実行結果]

AptanaでPrototypeを使ってみる
Aptanaの導入と日本語化
Tomcatが起動しない!?
Ajaxポータルを使ってみる - NetVibes -
開発現場で役立つデザインの鉄則
CVSからJ-Spiderのプロジェクトをチェックアウトしてみる
Webロボットの研究再開。その前に・・
Google Mapsに「地形」レイヤー
Ajax向けライブラリを探すときのサイト
世界的な鳥取県民!!



ちなみに、上記ソースはMovable Typeでも実行可能です。その場合、ブログサービスのURLはmt.cgiと同じ階層にあるxml-rpc.cgiに対して設定すれば良いです。たとえば下記みたいに。
例)
http://(それぞれのURL)/mt/xml-rpc.cgi

(注意)
Movable Typeの場合、パスワードはログインパスワードではなく、Webサービスのパスワード(APIパスワード)になります。
Movable Type 3.3 マニュアル - プロフィールの編集
Movable Type4の場合はシステムで作成したユーザのプロフィール編集画面で設定可能です。他のユーザにはWebサービスパスワードは表示されないみたいです。

【参考サイト】
XML-RPC 使ってみた - pie001's room
MovableType で使える XML-RPC API
Movable Type 3.3 マニュアル - XML-RPC API

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://ajaxapp.blog79.fc2.com/tb.php/90-b88df880
この記事にトラックバックする(FC2ブログユーザー)

無料ホームページ アフィリエイト レンタルサーバー FC2ブログ 一戸建て