Movable Type で使える XML-RPC API

(最終更新: 2004年7月28日 [第2版])
(新規作成: 2004年3月14日 [第1版])

takayama氏の 「Movable Type のマニュアル日本語訳」 の中から、 XML-RPCに関連する部分 を取り出し、若干の注釈、参考例を追加したものです。 (注意: 現在、takayama氏のサイト http://kompeito.org/ は Not Found になってしまっています)

Movable Type や TypePad、 ココログ 用の XML-RPC クライアントを作ろうとしている人の参考になれば幸いです。

また、XML-RPC がどういうものであるかは、 「XML-RPC仕様書」 が参考になります。
update ping の送信も XML-RPC を使いますが、ここでは触れません。 「Weblogs.Com XML-RPC interface」 を参照してください。

blogger API

注意: blogger API における appkey の値はすべて、Movable Type、TypePad、ココログ では無視されます。

blogger.newPost
説明
新しい記事を投稿します。公開することもできます。
引数
    String  appkey,   /* Movable Type, TypePad, ココログでは任意の文字列でよい */
    String  blogid,   /* blog の ID                                            */
    String  username, /* blog のユーザ名(アカウント)                           */
    String  password, /* 上記ユーザの blog への login 用パスワード             */
    String  content,  /* 記事本文                                              */
    boolean publish   /* 公開するか否か? (0: 「下書き」状態で記事を登録,       */
                      /*                  1: 「公開」状態で記事を登録)         */
返り値
成功すると、String postid として、 投稿後の 記事ID が得られます。
失敗したら、fault が返ります。
参考
投稿後、すぐに記事をちょっとだけ修正して登録し直したい場合など、 本APIで取得した「記事ID」を流用することができます。
注意
記事本文だけではなく、Extend(追記)、Excerpt(概要)を付けて投稿したい場合は、 本APIではなく、 metaWeblog.newPost を使用します。
なお、blogger API を採用している weblog では、 同一システム上に weblog が複数ある(blog ID で区別する必要がある)場合でも、 記事ID は weblog 単位でユニークとなるよう採番(附番)される訳ではなく、 システム全体でユニークとなるよう採番されます。
blogger.editPost
説明
既存記事を上書き投稿します。
引数
    String  appkey,   /* Movable Type, TypePad, ココログでは任意の文字列でよい */
    String  postid,   /* 上書き対象の記事ID                                    */
    String  username, /* blog のユーザ名(アカウント)                           */
    String  password, /* 上記ユーザの blog への login 用パスワード             */
    String  content,  /* (編集済みの)記事本文                                  */
    boolean publish   /* 公開するか否か? (0: 「下書き」状態で記事を登録,       */
                      /*                  1: 「公開」状態で記事を登録)         */
返り値
成功すると true が、失敗すると fault が返ります。
注意
あらかじめ上書き対象の記事の postid (記事ID) を取得しておく必要があります。
なお、記事本文だけではなく、Extend(追記)、Excerpt(概要)を含む記事の場合は、 本APIではなく、 metaWeblog.editPost を使用します。
blogger.deletePost
説明
記事を削除します。
引数
    String  appkey,   /* Movable Type, TypePad, ココログでは任意の文字列でよい */
    String  postid,   /* 削除対象の記事ID                                      */
    String  username, /* blog のユーザ名(アカウント)                           */
    String  password, /* 上記ユーザの blog への login 用パスワード             */
    boolean publish   /* 0 または 1 を指定(無視される)                         */
返り値
成功すると true,失敗すると fault が返ります。
注意
あらかじめ削除したい記事の postid (記事ID) を取得しておく必要があります。
blogger.getRecentPosts
説明
最新の記事をシステムから取ってきます。
引数
    String appkey,       /* Movable Type, TypePad, ココログでは任意の文字列でよい*/
    String blogid,       /* blog ID                                              */
    String username,     /* blog のユーザ名(アカウント)                          */
    String password,     /* 上記ユーザの blog への login 用パスワード            */
    int    numberOfPosts /* 取得する記事数                                       */
返り値
成功すると、取得に成功した記事数分の構造体の配列が返ってきます。
構造体には

     ISO.8601 dateCreated, /* 投稿日時         */
     String   userid,      /* 投稿者のユーザID */
     String   postid,      /* 記事ID           */
     String   content      /* 記事本文         */

が含まれます(構造体のメンバーの出現順序は不定)。
失敗すると、fault が返ります。

注意: dateCreated は、 当該 weblog が設置されているサーバのある場所の現地時間です。
20040116T14:10:03 (Movable Type での例)
2004-01-16T14:10:03Z (ココログ での例)
     → 字義通り UTC として解釈すると 9時間 ずれてしまう。
        2004-01-16T14:10:03+09:00 とみなす必要あり
        2004年7月1日以降、ココログでは、XML-RPC API に関し
        ては、「現地時間」ではなく常にUTCを使うようになった。
        [参考: お知らせココログ: 【修正】 XMLRPC API で取得する記事の時刻について]
    
Movable Type Ver2.661 での返り値の例: (最新の記事1個を取得した場合)
<?xml version="1.0" encoding="UTF-8" ?> 
<methodResponse>
  <params>
    <param>
      <value>
        <array>
          <data>
            <value>
              <struct>
                <member>
                  <name>postid</name> 
                  <value>
                    <string>104</string> 
                  </value>
                </member>
                <member>
                  <name>userid</name> 
                  <value>
                    <string>1</string> 
                  </value>
                </member>
                <member>
                  <name>content</name> 
                  <value>
                    <string>記事本文</string> 
                  </value>
                </member>
                <member>
                  <name>dateCreated</name> 
                  <value>
                    <dateTime.iso8601>20040116T14:10:03</dateTime.iso8601> 
                  </value>
                </member>
              </struct>
            </value>
          </data>
        </array>
      </value>
    </param>
  </params>
</methodResponse>
注意
あらかじめ記事取得対象の weblog の blogid (blog ID) を取得しておく必要があります。
blogger.getUsersBlogs
説明
書き手さんが投稿できる weblog の群れを返します。
引数
    String appkey,   /* Movable Type, TypePad, ココログでは任意の文字列でよい */
    String username, /* blog のユーザ名(アカウント)                           */
    String password  /* 上記ユーザの blog への login 用パスワード             */
返り値
成功すると、投稿可能な weblog の数の分、構造体の配列が返ってきます。
構造体には、

    String url,     /* 当該 weblog のトップページの URL */
    String blogid,  /* 当該 weblog の blog ID           */
    String blogName /* 当該 weblog の名前               */

が含まれます(構造体のメンバーの出現順序は不定)。
失敗すると、fault が返ります。
blogger.getUserInfo
説明
書き手さんの情報を返します。
引数
    String appkey,   /* Movable Type, TypePad, ココログでは任意の文字列でよい */
    String username, /* blog のユーザ名(アカウント)                           */
    String password  /* 上記ユーザの blog への login 用パスワード             */
返り値
成功すると、投稿可能な weblog の数の分、構造体の配列が返ってきます。
構造体には、

    String userid,    /* 当該 weblog でのユーザID         */
    String firstname, /* ユーザの名前                     */
    String lastname,  /* ユーザの苗字                     */
    String nickname,  /* ユーザのニックネーム(ハンドル)   */
    String email,     /* ユーザの Email アドレス          */
    String url        /* 当該 weblog のトップページの URL */

が含まれます(構造体のメンバーの出現順序は不定)。
失敗すると、fault が返ります。

注意: firstname は、Movable Type のユーザ名のうち、 最初のスペース(空白文字)
        のところまでのものとなります。
        lastname は、最初のスペースより後ろのものとなります
        (middle name 相当のものが存在する場合、それも lastname に含まれます)。

metaWeblog API

metaWeblog.newPost
説明
新しい記事を投稿します。公開することもできます。
引数
    String  blogid,   /* blog ID                                        */
    String  username, /* blog のユーザ名(アカウント)                    */
    String  password, /* 上記ユーザの blog への login 用パスワード      */
    struct  content,  /* content構造体 (記事情報)                       */
    boolean publish   /* 公開するか否か (0: 「下書き」状態で記事を登録, */
                      /*                 1: 「公開」状態で記事を登録    */

注意: content 構造体は、次のような標準的な項目を含みます:

    String   title,       /* 記事の件名     */
    String   description, /* 記事の本文     */
    ISO.8601 dateCreated, /* 記事の投稿日時 */

それに加えて、Movable Type では次の7つの項目に値を入れて渡すことができます:

    int      mt_allow_comments, /* コメントを受け入れるか否か           */
    int      mt_allow_pings,    /* トラックバックPingを受け入れるか否か */
    String   mt_convert_breaks, /* 記事本文の改行の扱いをどうするか     */
    String   mt_text_more,      /* 追記                                 */ 
    String   mt_excerpt,        /* 概要                                 */
    String   mt_keywords,       /* キーワードの値                       */
    array    mt_tb_ping_urls,   /* 当該記事に関して送信したい           */
                                /*    トラックバック Ping 先の URL 群   */

mt_convert_breaks に 0 (もしくは none) を指定した場合、 「記事の本文」および「追記」中の改行は <br /> あるいは </p><p> に変換されません。 1 (もしくは convert_breaks)を指定した場合、 「記事の本文」および「追記」中の改行は <br /> あるいは </p><p> に変換されます。

dateCreated は、ISO.8601 形式で表記してください (ただし、省略することも可能です。 省略した場合は現在時刻を指定したものとみなされます)。
ココログの場合、dateCreated は UTC (協定世界時。正確には違う概念なのですが、 GMT[グリニッジ標準時]と同じと考えて構いません) で指定してください。 日本時間を使うと9時間未来の記事になってしまうので注意。
返り値
成功すると、String postid が投稿後の「記事ID」として返ってきます。
失敗すると、fault です。
metaWeblog.editPost
説明
既存記事を上書き投稿します。
引数
    String  postid,   /* 上書き対象の記事ID                             */
    String  username, /* blog のユーザ名(アカウント)                    */
    String  password, /* 上記ユーザの blog への login 用パスワード      */
    struct  content,  /* content構造体 (記事情報)                       */
    boolean publish   /* 公開するか否か (0: 「下書き」状態で記事を登録, */
                      /*                 1: 「公開」状態で記事を登録    */

注意: content 構造体は、次のような標準的な項目を含みます:

    String   title,       /* 記事の件名     */
    String   description, /* 記事の本文     */
    ISO.8601 dateCreated, /* 記事の投稿日時 */ 

それに加えて、Movable Type では次の7つの項目に値を入れて渡すことができます:

    int      mt_allow_comments, /* コメントを受け入れるか否か           */
    int      mt_allow_pings,    /* トラックバックPingを受け入れるか否か */
    String   mt_convert_breaks, /* 記事本文の改行の扱いをどうするか     */
    String   mt_text_more,      /* 追記                                 */ 
    String   mt_excerpt,        /* 概要                                 */
    String   mt_keywords,       /* キーワードの値                       */
    array    mt_tb_ping_urls,   /* 当該記事に関して送信したい           */
                                /*    トラックバック Ping 先の URL 群   */

dateCreated は、ISO.8601 形式で表記してください。 (ただし、省略することも可能です。 省略した場合は元の記事の投稿日時がそのまま引き継がれます)。
ココログの場合、dateCreated は UTC (協定世界時。正確には違う概念なのですが、 GMT[グリニッジ標準時]と同じと考えて構いません) で指定してください。 日本時間を使うと 9時間未来の記事になってしまうので注意。また、 metaWeblog.getPost 等で取得した記事の 投稿日時(dateCreated)は UTC 表現であるにも関わらず、 実際は日本時間になっています。 したがって、 metaWeblog.getPost 等で 取得した dateCreated をそのまま metaWeblog.editPost で流用すると、投稿日時が9時間未来になってしまいます。 9時間前の日時に書き直すか、そのまま流用するか、 dateCreated を省略するか、いずれかの方法で対応してください。
返り値
成功すると true が、失敗すると fault が返ります。
注意
あらかじめ上書きしたい記事の postid (記事ID) を取得しておく必要があります。
metaWeblog.getPost
説明
記事IDで指定した記事を取得します。
引数
    String postid,   /* 取得したい記事の記事ID */
    String username, /* blog のユーザ名(アカウント) */
    String password  /* 上記ユーザの blog への login 用パスワード */
返り値
成功すると、次の要素を含む構造体が返ってきます:
    
    String   userid,            /* 投稿者のユーザID                       */
    ISO.8601 dateCreated,       /* 記事の投稿日時                         */
    String   postid,            /* 記事ID                                 */
    String   description,       /* 記事の本文                             */
    String   title,             /* 記事の件名                             */
    String   link,              /* 記事 の URL (下記の permalink と同一)  */
    String   permaLink,         /* permalink (ココログでは「固定リンク」) */
    String   mt_excerpt,        /* 概要                                   */
    String   mt_text_more,      /* 追記                                   */
    int      mt_allow_comments, /* コメントを受け入れるか否か             */
    int      mt_allow_pings,    /* トラックバック Ping を受け入れるか否か */
    String   mt_convert_breaks, /* 改行の扱いをどうするか                 */
    String   mt_keywords;       /* キーワード                             */

失敗すると、fault が返ります。

注意: link と permaLink は、どちらも 蓄積されている記事への URL になります。
        mt_ ではじまっている項目は、metaWeblog.getPost API を Movable Type へ
        実装する際に拡張されたものです。
        なお、構造体のメンバーの出現順序は不定です。
注意
あらかじめ取得したい記事の postid (記事ID) を取得しておく必要があります。
ココログの場合、 本APIで取得した dateCreated (記事の投稿日時)は、 UTC 表現であるにも関わらず、実際は日本時間になっています。 取り扱いに注意してください。
metaWeblog.getRecentPosts
説明
最新の記事をシステムから取ってきます。
引数
    String blogid,       /* blog ID                                   */
    String username,     /* blog のユーザ名(アカウント)               */
    String password,     /* 上記ユーザの blog への login 用パスワード */
    int    numberOfPosts /* 取得する記事数                            */
返り値
成功すると、次の要素からなる構造体が、取得に成功した記事の数だけ、 返ってきます。
    
    ISO.8601 dateCreated,       /* 記事の投稿日時                         */
    String   userid,            /* 投稿者のユーザID                       */
    String   postid,            /* 記事ID                                 */
    String   description,       /* 記事本文                               */
    String   title,             /* 記事の件名                             */
    String   link,              /* 記事 の URL (下記の permalink と同一)  */
    String   permaLink,         /* permalink (ココログでは「固定リンク」) */
    String   mt_excerpt,        /* 概要                                   */
    String   mt_text_more,      /* 追記                                   */
    int      mt_allow_comments, /* コメントを受け入れるか否か             */
    int      mt_allow_pings,    /* トラックバック Ping を受け入れるか否か */
    String   mt_convert_breaks, /* 改行の扱いをどうするか                 */
    String   mt_keywords;       /* キーワード                             */

失敗すると、fault が返ります。

注意: dateCreated は、 当該 weblog が設置されているサーバのある場所の現地時間です。
        link と permaLink は、どちらも 蓄積されている記事への URL になります。
        mt_ ではじまっている項目は、metaWeblog.getPost API を Movable Type へ
        実装する際に拡張されたものです。
        なお、構造体のメンバーの出現順序は不定です。
注意
あらかじめ記事取得対象の weblog の blogid (blog ID) を取得しておく必要があります。
ココログの場合、 本APIで取得した dateCreated (記事の投稿日時)は、 UTC 表現であるにも関わらず、実際は日本時間になっています。 取り扱いに注意してください。
metaWeblog.newMediaObject
説明
ファイルを webサーバに転送します。
引数
    String blogid,   /* blog ID                                   */
    String username, /* blog のユーザ名(アカウント)               */
    String password, /* 上記ユーザの blog への login 用パスワード */
    struct file

注意: file 構造体には、2つの項目があります:

    base64 bits, /* BASE64 で符号化された、ファイルの中身 */
    String name, /* ファイル名                            */ 

(3つ目の項目になる予定の) type [ファイルの種類] は、 今のところ無視されます。
なお、構造体のメンバーの出現順序は不定です。
返り値
転送したファイルへの URL が返ってきます。
注意
あらかじめ記事取得対象の weblog の blogid (blog ID) を取得しておく必要があります。

MovableType API

mt.getRecentPostTitles
説明
最新の記事に関する情報を、帯域にやさしく取得します。
引数
    String blogid,       /* blog ID                                   */
    String username,     /* blog のユーザ名(アカウント)               */
    String password,     /* 上記ユーザの blog への login 用パスワード */
    int    numberOfPosts /* 情報を取得したい記事の数                  */
返り値
成功すると、情報の取得に成功した記事の数だけ、 次の要素を含む構造体の配列が返ってきます:

    ISO.8601 dateCreated, /* 投稿日時         */
    String   userid,      /* 投稿者のユーザID */
    String   postid,      /* 記事ID           */
    String   title;       /* 記事の件名       */

なお、構造体のメンバーの出現順序は不定です。
失敗すると、faultが返ります。

注意: dateCreated は、 blogid の weblog が開設されているサーバのある場所の現地時間表記です。
注意
あらかじめ記事取得対象の weblog の blogid (blog ID) を取得しておく必要があります。
ココログの場合、 本APIで取得した dateCreated (記事の投稿日時)は、 UTC 表現であるにも関わらず、実際は日本時間になっています。 取り扱いに注意してください。
mt.getCategoryList
説明
その weblog にあるすべての分類(カテゴリ)を返します。
引数
    String blogid,   /* blog ID                                   */
    String username, /* blog のユーザ名(アカウント)               */
    String password  /* 上記ユーザの blog への login 用パスワード */
返り値
成功すると、分類の数だけ、次の要素を含む構造体の配列が返ってきます:

    String categoryId    /* カテゴリID     */
    String categoryName; /* カテゴリの名前 */

なお、構造体のメンバーの出現順序は不定です。
失敗すると、fault が返ります。
注意
あらかじめ記事取得対象の weblog の blogid (blog ID) を取得しておく必要があります。
mt.getPostCategories
説明
指定記事に設定されている分類を取得します。
引数
    String postid,   /* カテゴリ取得対象の記事ID                  */
    String username, /* blog のユーザ名(アカウント)               */
    String password  /* 上記ユーザの blog への login 用パスワード */
返り値
成功すると、次の要素を含む構造体の配列が返ってきます:

    String  categoryName, /* カテゴリの名前     */
    String  categoryId,   /* カテゴリID         */
    boolean isPrimary;    /* 第一カテゴリか否か */

失敗すると、fault が返ります。
注意: isPrimary は、当該分類(カテゴリ)がその記事の第一カテゴリかどうか、 ということを意味します。
mt.setPostCategories
説明
記事の分類を設定します。
引数
    String postid,    /* カテゴリ設定対象の記事ID                  */
    String username,  /* blog のユーザ名(アカウント)               */
    String password,  /* 上記ユーザの blog への login 用パスワード */
    array  categories /* カテゴリに関する情報                      */

注意: categories は、設定したカテゴリの数だけ次の要素を含む、構造体の配列です:

    String  categoryId, /* カテゴリID                                 */
    boolean isPrimary   /* 当該カテゴリを第一カテゴリに指定するか否か */

isPrimary を使い、第一カテゴリを指定することも可能です。
このフラグを指定しなければ、配列のひとつめの要素が、 その記事の第一カテゴリになります。
返り値
成功すると true が、失敗すると fault が返ります。
mt.supportedMethods
説明
サーバで提供されている XML-RPC の呼び出し方法を取得します。
引数
なし
返り値
サーバで提供されている呼び出し方法の配列が返ります。

Movable Type Ver2.661 での返り値の例:
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <params>
    <param><value><array><data>
      <value><string>blogger.newPost</string></value>
      <value><string>blogger.editPost</string></value>
      <value><string>blogger.getRecentPosts</string></value>
      <value><string>blogger.getUsersBlogs</string></value>
      <value><string>blogger.getUserInfo</string></value>
      <value><string>blogger.deletePost</string></value>
      <value><string>metaWeblog.getPost</string></value>
      <value><string>metaWeblog.newPost</string></value>
      <value><string>metaWeblog.editPost</string></value>
      <value><string>metaWeblog.getRecentPosts</string></value>
      <value><string>metaWeblog.newMediaObject</string></value>
      <value><string>mt.getCategoryList</string></value>
      <value><string>mt.setPostCategories</string></value>
      <value><string>mt.getPostCategories</string></value>
      <value><string>mt.getTrackbackPings</string></value>
      <value><string>mt.supportedTextFilters</string></value>
      <value><string>mt.getRecentPostTitles</string></value>
      <value><string>mt.publishPost</string></value>
    </data></array></value></param>
  </params>
</methodResponse>
参考: 本API (mt.supportedMethods) 自身は、上記、返り値に含まれていないことに注意。
注意
本API の実行にあたっては、ユーザ名、パスワードを送信する必要がないため、 誰でも実行しようと思えば実行できてしまうことに注意してください。
mt.supportedTextFilters
説明
サーバで提供されている文書整形プラグインに関する情報を取得します。
引数
なし
返り値
    String key,  /* フィルタ識別子 */
    String label /* フィルタの説明 */

を含む構造体の配列が、フィルタの数だけ、返ってきます。
key は、文書整形プラグイン(グローバルフィルタの一種)を区別する一意な文字列で、 label は、それを読める形にした説明です。
key は、newPost とeditPost に mt_convert_breaks 変数として渡される値です。

Movable Type Ver2.661 での返り値の例:
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <params><param><value><array><data>
    <value><struct>
      <member>
        <name>label</name>
        <value><string>Convert Line Breaks</string></value>
      </member>
      <member>
        <name>key</name>
        <value><string>__default__</string></value>
      </member>
    </struct></value>
  </data></array></value></param></params>
</methodResponse>
注意
本API の実行にあたっては、ユーザ名、パスワードを送信する必要がないため、 誰でも実行しようと思えば実行できてしまうことに注意してください。
mt.getTrackbackPings
説明
指定した記事に送られた トラックバック Ping URL 群を取得します。
この API は、指定した記事への Ping 群を取得して、 各々の Ping に対し、 同じ処理を順番に行うようなプログラムでの使用が想定されています。 例えば、ある話題についての記事とそれに言及している記事から成る web グラフを作り上げるような場合です。
引数
    String postid /* 記事ID */
返り値
指定した記事に関連付けられているトラックバックの数だけ、 次の要素を含む構造体の配列が返ってきます:

    String pingTitle, /* Ping 元の記事の 件名              */
    String pingURL,   /* Ping 元の記事の URL               */
    String pingIP     /* Ping してきたホストの IP アドレス */

注意
本API の実行にあたっては、ユーザ名、パスワードを送信する必要がないため、 誰でも実行しようと思えば実行できてしまうことに注意してください。
また、pingURL で示される Web ページの存在するサーバマシンと、 実際に ping を送信してきたマシンは、 必ずしも同一マシンであるとは限らないことに注意してください。
なお、本API の実行にあたっては、 あらかじめ情報を取得したい記事の postid (記事ID) を取得しておく必要があります。
mt.publishPost
説明
weblog にあるすべての静的ファイルを再構築し、 記事IDで指定した記事を公開します (指定した記事がすでに公開状態の場合は、再構築のみ実行します)。
なお、記事の状態が更新された場合でも 本 API は update ping の送出を行いません。
引数
    String postid,   /* 公開対象の記事ID                          */
    String username, /* blog のユーザ名(アカウント)               */
    String password  /* 上記ユーザの blog への login 用パスワード */
返り値
成功すると true が、失敗すると fault が返ります。
mt.setNextScheduledPost
説明
下書き状態で投稿済みの記事に対し、指定した日時が到来したら公開状態にするよう指示します。
本APIは、2004年7月28日現在、TypePad系でのみ使えます (2004年8月以降にリリース予定の Movable Type 3.1 以降でも使えるようになる予定[当方の推測])。
なお、指定した日時が到来し、公開状態になっても、(対象記事に trackback URL が指定されている場合でも) trackback ping の送出は行なわれません。
引数
今のところ、残念ながら詳細は不明です。(本APIに関する公式ドキュメントを発見できていません)
したがって、以下は推定です。
    String postid,        /* 公開予約対象の記事ID                      */
    ISO.8601 dateCreated, /* 公開日時                                  */
    String username,      /* blog のユーザ名(アカウント)               */
    String password       /* 上記ユーザの blog への login 用パスワード */
返り値
成功すると true が、失敗すると fault が返ります。(推定)

参考: Movable Type ではサポートされていない blogger API

以下、Movable Type ではサポートされていない Blogger XML-RPC API です。参考までに紹介しておきます。

blogger.getTemplate
引数
  appkey       (string): Unique identifier/passcode of the application sending the post.
                         (See access info.) 
  blogid       (string): Unique identifier of the blog who's template is to be returned. 
  username     (string): Login for a Blogger who has admin permission on give blog. 
  password     (string): Password for said username. 
  templateType (string): Determines which of the blog's templates will be returned.
                         Currently, either "main" or "archiveIndex". 
see also
http://new.blogger.com/developers/api/1_docs/xmlrpc_getTemplate.html
blogger.setTemplate
引数
  appkey       (string): Unique identifier/passcode of the application sending the post.
                         (See access info.) 
  blogid       (string): Unique identifier of the blog who's template is to be returned. 
  username     (string): Login for a Blogger who has admin permission on give blog. 
  password     (string): Password for said username. 
  template     (string): The text for the new template (usually mostly HTML).
                         Must contain opening and closing <Blogger> tags, since they're needed to publish. 
  templateType (string): Determines which of the blog's templates will be returned.
                         Currently, either "main" or "archiveIndex". 
see also
http://new.blogger.com/developers/api/1_docs/xmlrpc_setTemplate.html

参考: XML-RPC API の使用例

新規記事のカテゴリを設定した上、投稿を行なうには、以下の手順で XML-RPC API を実行します (他にも方法はあると思います。各自で考えてみてください)。

   (1) カテゴリ一覧取得 (mt.getCategoryList)
   (2) ユーザ(投稿者)にカテゴリ選択、投稿記事作成をしてもらう
   (3) 新規記事投稿     (metaWeblog.newPost)
   (4) 投稿した記事のカテゴリ設定変更 ((3) で返ってきた postID を引数として mt.setPostCategories 実行)

既存記事を編集して、投稿し直す場合の手順の例を示します。

  (1) 記事題名一覧取得 (mt.getRecentPostTitles)
  (2) ユーザに編集対象記事を選択してもらう
  (3) 編集対象記事を取得 (metaWeblog.getPost)
  (4) 編集対象記事のカテゴリを取得 (mt.getPostCategories)
  (5) ユーザが記事の編集、カテゴリの変更を実施
  (6) 既存記事上書き投稿 (metaWeblog.editPost)
  (7) 既存記事カテゴリ設定 (mt.setPostCategories)

参考: ココログに関する補遺

ココログで XML-RPC を使う場合、サーバからの応答は UTF-8 で返ってくることになっています (2004年1月21日現在、他のエンコーディングは未サポート) が、 応答に ASCII 文字 (ISO8859-1) 以外の文字(例えば、漢字)が含まれるようなとき、 UTF-8 としては正しくないエンコーディングが施された状態で応答が返ってくることがあります。
例えば、「ココログ」という文字は本来、(a) に示すバイト並びとなるはずですが、 実際には (b) のようなバイト並びとなることがあります。
(a) と (b) のどちらで応答が返ってくるかは不定です。

(a) E3 82 B3 E3 82 B3 E3 83 AD E3 82 B0
(b) C3 A3 C2 82 C2 B3 C3 A3 C2 82 C2 B3 C3 A3 C2 82 C2 AD C3 A3 C2 82 C2 B0

上記の例でいうと、“(a) の E3 → (b) の C3 A3”、“82 → C2 82”、“B3 → C2 B3” のように、 (b) は (a) の バイト並びに対して、 さらに何らかのエンコーディング処理を適用したかのような形 になっています。 つまり、期待しないバイト並びが返ってきても、コードの対応に規則性があるため、 万一 (b) のような応答が返ってきても (a) を得る方法(デコードする方法)はある、 ということです。

(a) に対して、さらに UTF-8 エンコーディングを施しているのではないか、 との説もありますが、真相は不明です。
ちなみに、(a) を Shift_JIS (もしくは CP932)文字列とみなして UTF-8 への変換を行なうと、 以下のようなバイト並びになります。
E7 B9 A7 EF BD B3 E7 B9 A7 EF BD B3 E7 B9 9D EF BD AD E7 B9 A7 EF BD B0

[Tsuporone's Program Library] [Activity Memo] [観測気球] [ひとこと伝言板]
Google

Access Count: 

Copyright (c) 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009, 2010, 2011, 2012 by Hiroshi Tsujimura (tsupo@na.rim.or.jp) Some Rights Reserved.
Last Modified: Wednesday, 29-Aug-2007 03:53:52 JST