XML-RPCの利用には特にgemは必要ありません。
今回はsinatraを使って、webアプリからAPI経由でFC2に投稿するサンプルを作ってみました。
main.rb
# encoding: utf-8
require 'sinatra'
require 'xmlrpc/client'
get '/fc2/new' do
erb :new
end
post '/fc2/create' do
#FC2ブログのエンドポイント
client = XMLRPC::Client.new2('http://blog.fc2.com/xmlrpc.php')
#HTTPを圧縮しない
client.http_header_extra = {'accept-encoding' => 'identity'}
#ブログID,パスワード、コンテンツ
blog_id = 'blog_id'
password = 'password'
contents = {
'title' => 'test',
'description' => 'test post'
}
begin
#APIリクエスト(新規投稿)
client.call('metaWeblog.newPost', '', blog_id, password, contents, 1)
rescue XMLRPC::FaultException => e
p e.faultCode
p e.faultString
end
end
新規投稿時は、metaWeblog.newPostというパラメータでコールしてやるといいです。
PHPによるサンプルやその他の命令については以下に詳しく紹介されています。
また、XML-RPCクライアントのHTTP圧縮によるエラーの回避については下記を参考にさせていただきました。