はてなダイアリーキーワード自動リンクAPIのJavaでのサンプル。

書いてみた。Apache XML-RPCのサイト*1からxmlrpc-1.2-b1.jarを落として*2Class-pathに含めること。parameters が説明にあるページ*3と違ってstructが一個でstructの中でbodyとかの名前を使ってる罠とエンコーディングのやり方に注意。XMLRpc.setEncodingメソッドではだめだった。


import java.io.*;
import java.util.*;

import org.apache.xmlrpc.XmlRpc;
import org.apache.xmlrpc.XmlRpcClient;
import org.apache.xmlrpc.XmlRpcException;

public class test {
public static void main(String[] argv) throws UnsupportedEncodingException {
String url = "http://d.hatena.ne.jp/xmlrpc";
String methodName = "hatena.setKeywordLink";

String body = "キーワード";
Integer score = new Integer(0);
String[] cname = new String[] {"book", "movie", "hatena"};
String a_target = "blank";
String a_class = "_keyword";

Vector params = new Vector();

Hashtable struct = new Hashtable();
struct.put("body", body.getBytes("utf-8"));
struct.put("score", score);
struct.put("cname", cname);
struct.put("a_target", a_target);
struct.put("a_class", a_class);

params.add(struct);
try {
XmlRpcClient client = new XmlRpcClient(url);
try {
String result = (String)client.execute(methodName, params);
System.out.println("result: " + new String(result.getBytes(), "utf-8"));
} catch (XmlRpcException ex) {
ex.printStackTrace();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

追記:
cname*4に対応。


なんか一部分だけ文字化けすんだよな。何が悪いんだろうか。サーバー側で文字化けしてるっぽいので調べようがないんだけども。Apache XML-RPCがタコってのんのかもな。