このブログは、ややマイナーなPebbleというツールで構築しています。PebbleはJavaで書かれているのですが、他のJava製品にありがちな面倒な設定がなく、warファイルを配置するだけで設置完了というお手軽さが特徴です。
このPebbleにPing送信機能がついてたので設定してみたのですが、どうやら失敗していたようで以下のようなログが出ていました。
2006-09-20 01:23:17,306 [Thread-45] ERROR pebble.webservice.UpdateNotificationPingsClient - Exception when calling weblogUpdates.ping at http://ping.cocolog-nifty.com/xmlrpcjava.io.IOException: Invalid character data corresponding to XML entity ヒ at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java:444) at org.apache.xmlrpc.XmlRpcClient$Worker.executeAsync(XmlRpcClient.java:363) at org.apache.xmlrpc.XmlRpcClient$Worker.run(XmlRpcClient.java:349) at java.lang.Thread.run(Thread.java:534)
仕方ないので「XmlRpcClient Invalid character data corresponding to XML entity」で検索を掛けてみると、以下のページを発見。
Apache XML-RPCではまったこと
なんでもXML-RPCに日本語処理のバグがあるとか。(XML-RPC2.0では直っているらしいです。Pebbleが使っているのは、XML-RPC1.2-b1。)
仕方ないので、ここから、XML-RPCのソースをダウンロードしてXMLWriter.javaを1行修正。
if (c < 0x20 || c > 0xff) ↓if (c < 0x20)
Antでビルドして、できたxmlrpc-1.2-b1.jarをPebbleが使っているものと置き換えてみました。
これで直っていたらこの記事を送信後、Pingが飛ぶはずです。