今回はXML-RPCによるWebサービスにアクセスする方法について説明します。XML-RPCはHTTPのPOSTでXMLデータを送信し、XMLデータとして結果を取得します。仕様書」をご覧ください。現在公に公開されているWebサービスでは、XML-RPCを使用したサービスは少ないようです。XML-RPCはブログ関係のAPIとしてはよく使われてきました。interfaceなどはXML-RPCです。APIを使用する方法を紹介します。APIは、ブログへの投稿や、記事の更新、削除、さらに投稿された記事の情報の取得等を可能にするAPIです。APIもよく知られています。Typeをはじめ多くのブログアプリケーションや、ホスティング型のブログサービスで利用できます。APIを使用する具体例として、blogger.getRecentPostsメソッドを呼び出して一番最近投稿した記事の内容(content)を取得し表示するサンプルを紹介します。POST送信するXMLデータの作成や、結果として返されたXMLデータの解析は手抜きですが(faultが返された時の処理も省略しています)、大雑把にはこんな感じです。"該当する投稿が見つかりませんでした。"該当する投稿が見つかりませんでした。Typeの場合、mtフォルダ内にあるmt-xmlrpc.cgiとなります。XML-RPCには文字コードに関する明確な規定がないようですが、送信するリクエストは適当な文字コード(多分ブログで使用している文字コードとなるでしょう)で送受信する必要があるようです。上記の例はかなり手を抜きましたが、それでも結構大変です。したものを作るとなると、なおさらです。ありがたい事に、XML-RPCを実装するためのオープンソースのライブラリが存在します。それがXML-RPC.NETです。XML-RPC.NET先と同じようにblogger.getRecentPostsメソッドを今度はXML-RPC.NETを使って呼び出してみましょう。DLLをプロジェクトの参照に追加します。XML-RPC.NETには2つのDLLがあります。Frameworkのすべてのバージョンで使用できますが、CookComputing.XmlRpcV2.dllは2.0以上でしか使用できません。ここではすべてのバージョンで使用できるCookComputing.XmlRpc.dllを使います。次に下に示すような構造体を宣言します。API」をご覧ください)。このような構造体になるのかについては簡単にお分かりいただけると思いますので、特に説明の必要は無いでしょう。ISO.8601はDateTime型となります。FAQ」で説明されています。}}次に、IXmlRpcProxyを継承した以下のようなインターフェイスを宣言します。XmlRpcMethod属性で対応するXML-RPCのメソッドを指定します。ここではblogger.getRecentPostsメソッドしかありませんが、その他のメソッドを記述してももちろんOKです。リクエスト先のURLが固定されているならば、インターフェイスにXmlRpcUrl属性を付けることもできます。}}ここまでできればあとは実に簡単です。XmlRpcProxyGen.Createメソッドでプロキシクラスのインスタンスを作成し、getRecentPostsメソッドを呼び出すだけです。実際のコードは以下のようになります。"該当する投稿が見つかりませんでした。"該当する投稿が見つかりませんでした。</form></body></html>ちなみにCookComputing.XmlRpcV2.dllを使用する場合は、次のようにしてプロキシクラスのインスタンスを作成します。