Java、PHP、PerlインターネットプログラミングTips集

ノウハウとしてパソコンに貯めてたJavaソースもろともHDDがクラッシュしてしまったので、Web上に残すことにしました。Javaプログラミングでインターネット上の作業自動化を目指します。

XML-RPCでブログへ記事を投稿する

今回はXML-RPCを使って、ブログを投稿してみたいと思います。
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より投稿


にほんブログ村 IT技術ブログへ  にほんブログ村 IT技術ブログ ソフトウェアへ  にほんブログ村 IT技術ブログ プログラム・プログラマへ  にほんブログ村 ネットブログ ネットサービスへ  
多重債務を完済すべく、僕も登録している右バナーのお財布.comは、無料収益性の高いお小遣い稼ぎです。その秘密はコチラ。右のバナーから簡単に登録でき始められます。⇒⇒⇒
お財布.com - 無料で手軽に貯まる魔法のお財布
今なら、登録するだけでコインプレゼント!なお、プログラムが分かる上級者なら、僕が独自に開発したJavaプログラムを使えば、自動的に収益をGET!できます。そのプログラムはコチラ

コメント

コメントの投稿


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

トラックバック

トラックバックURLはこちら
http://javatips.blog62.fc2.com/tb.php/23-1ee05f7c
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

FC2ブログ