XML-RPCを使える環境にするには、下記を参照ください。
【XML-RPCの環境について】
・もしかしたら使えるかも?Java Tips集 JavaサンプルにおけるXML-RPCの環境
以下のAPIを使用して、このブログを投稿します。
【使用API】
metaWeblog.newPost
[XmlRpcUnitNewEntry.java]
package myblog;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;
import org.apache.xmlrpc.XmlRpc;
import org.apache.xmlrpc.XmlRpcClient;
/**
* 最近投稿されたブログ取得クラス
* @author lily(http://javatips.blog62.fc2.com/)
*
*/
public class XmlRpcUnitNewEntry {
private final static String BLOG_STRTYPE ="UTF-8"; // 文字コード
private static String TARGET_BLODID = null; // ブログID
private static String TARGET_URL = null; // XML-RPC用URL
private static String TARGET_USERNAME = null; // ログインユーザ
private static String TARGET_PASSWORD = null; // パスワード
/**
* ブログIdを取得するコンストラクタ
* @param url ブログサービスが提供するXML-RPC用URL
* @param username ログインユーザ名
* @param password ログインパスワード
*/
public XmlRpcUnitNewEntry(String url, String username, String password)
throws Exception {
TARGET_URL = url;
TARGET_USERNAME = username;
TARGET_PASSWORD = password;
Vector<String> params = new Vector<String>();
XmlRpc.setDefaultInputEncoding(BLOG_STRTYPE);
XmlRpcClient client = new XmlRpcClient(TARGET_URL);
params.add("appkey"); // appkey は何でもよいらしい
params.add(TARGET_USERNAME); // ログインユーザ
params.add(TARGET_PASSWORD); // ログインパスワード
// ブログIDを取得
Object result = client.execute("blogger.getUsersBlogs", params);
if (result instanceof Boolean) { // ブログリストが取得できなかった場合、false が返る
throw new Exception("can't get UsersBlogs");
}
TARGET_BLODID = (String) ((Hashtable) ((Vector) result).get(0)).get("blogid");
System.out.println("ブログId:" + TARGET_BLODID);
}
/**
* 新規にブログを投稿
* @param title ブログタイトル
* @param description ブログ本文
* @return ポストID
* @throws Exception
*/
public String NewPost(String title, String description) throws Exception {
String postid = null;
XmlRpc.setDefaultInputEncoding(BLOG_STRTYPE);
XmlRpcClient client = new XmlRpcClient(TARGET_URL);
Hashtable<String, String> contents = new Hashtable<String, String>();
contents.put("title", title);
contents.put("description", description);
Vector<Object> params = new Vector<Object>();
params.add(TARGET_BLODID); /* blog ID */
params.add(TARGET_USERNAME); /* blog のユーザ名(アカウント) */
params.add(TARGET_PASSWORD); /* 上記ユーザの blog への login 用パスワード */
params.add(contents); /* content構造体 (記事情報) */
params.add(new Boolean("true")); /* 公開するか否か (0:下書き1:公開 */
// 記事を取得する。
Object retid = client.execute("metaWeblog.newPost", params);
System.out.println("New Post:" + retid);
if( (retid.toString()).matches("[0-9]+") == true) {
postid = retid.toString();
}
return(postid);
}
}
このクラスを活用して投稿するサンプルを続きページに掲載しています。
package tester;
import myblog.*;
public class TestXmlRpcUnitNewEntry {
/**
* @param args
*/
public static void main(String[] args) {
String url = "http://blog.fc2.com/xmlrpc.php";
String username = "××××";
String password = "××××";
try {
// ブログID取得インスタンス生成
XmlRpcUnitNewEntry xrune
= new XmlRpcUnitNewEntry(url, username, password);
// ブログ投稿
xrune.NewPost("Java XML-RPCより投稿", // タイトル
"テスト記事本文"); // 記事本文
}
catch(Exception e) {
System.out.println(e);
}
}
}
「×××」の部分はユーザ名とパスワードなのでそれぞれのブログのものを記載ください。
また、このサンプルの実行結果は以下の記事です。
・もしかしたら使えるかも?Java Tips集 Java XML-RPCより投稿



