先日の記事で、「新館」の「ザ・公園」に関連ブログ記事を自動的に取得して表示する方法がよくわからない、と書きました。要は、このブログ「ココログ」で使用可能なWeb APIが何でどのようなものかということと、その通信方法がXML-RPCでありASP.NETでこのプロトコルを使う方法がよくわからなかった、という話でした。その後ちょっと調査しまして、その糸口が掴めましたので、忘れないうちに概要を書いておきます。
なお、ASP.NETからXML-RPCを使う方法については、下記のWebページ(以降DoboWikiとさせていただきます)を参考にさせていただきました。
XML-RPCを使ったWebサービスにアクセスする – DoboWiki
まず、ASP.NETからXML-RPCを呼び出す方法ですが、詳しくDoboWikiに書いてあります。もっともプリミティブな方法として、APIに渡す引数をXML-RPC準拠で作成し、それをHTTP POSTにて送信し、結果をXMLで受け取る、というものがあります。ですが、DoboWikiにも書かれているように、単純な操作の割にはコードが長くなり面倒です。
そこで、XML-RPC.NETというところにある、オープンソースのライブラリXmlRpcを使うとよい、ということになります。実は、このライブラリについての存在は以前から掴んでいたのですが、ASP.NET標準以外のライブラリを使うことに抵抗がある、きっと標準でよい手段が用意されているに違いない!という思い込みで、放置しておりました。
ですがDoboWikiを見るに、非常に簡単に使えそうですので、意を決して使ってみることにしました。
まずダウンロードしたファイル(xml-rpc.net.2.5.0.zip)を適当な場所に解凍しておきます。中にはバイナリやサンプル、ソースコードが入っていますが、今回使うのはバイナリのみです。DoboWikiの記事におけるものよりバージョンが上がっているらしく、ASP.NET 1.0用のものは廃止され、Compact Framework用(CookComputing.XmlRpc.CF.dll)のものとASP.NET 2.0用(CookComputing.XmlRpcV2.dll)のものがありました。今回は、もちろん2.0用を使用します。
プロジェクトに参照を追加するには、Visual Web Developerのメニュー([Webサイト]→[参照の追加])でこのDLLを選べばOKです。勝手に、binフォルダに追加されます。
パラメータのための構造体と、レスポンスのための構造体の作成については、DoboWikiを参考にしました。記事中では、最近投稿した記事を取得する(後述するAPIのBlogger.getRecentPostを使う)サンプルになっていましたので、指定した記事の情報を取得する(後述するAPIのMetaWeblog.getPostを使う)に変更しています。これを記述したクラスファイルを、適当なファイル名でApp_Codeフォルダに置きます。
ココログのWeb APIを呼び出すのですが、ココログではBlogger APIとMetaWeblog APIをサポートしています(他にもMT拡張とか、使えるようですが省略)。目的は、指定記事の情報を取得するというもので、このためにgetPostというメソッドが用意されています。
さらに目的を突っ込めば、タイトルや日付、URLが欲しい、というものなのですが、残念ながらBlogger APIのgetPostにはそのような機能はなく、いきなり記事本体を取得したりと目的に叶いません。MetaWeblog APIのgetPostは記事タイトルや日付、URLなどを取得できるようになっていますので、そっちを使います。
ちなみに、Blogger API、MetaWeblog APIの詳細は、ここが非常に参考になります。
MetaWeblog.getPostの引数とレスポンスの構造を把握したら、それを実際の構造体に実装し、ココログのエンドポイントに送信してやればOKです。
もっと具体的な話として、
- ココログのエンドポイント
- 構造体の定義
- 実際のアクセスコード
- レスポンス取得後の処理
といったことがあると思いますが、ここまででもけっこう長くなりましたので、それについては日を改めまして…。
コメント