XML-RPC 備忘

作個記錄,不然每次學會下次要用又要再查

RPC 的意思是「遠端程序呼叫」(Remote Procedure Call),而 XML-RPC 是利用 HTTP 而傳送一 XML 文件來喚起伺服器上某個程序的運作。許多 Web Service 或是 API 都是使用這種方式提供開發者一個窗口,讓開發者能夠根據定義好的方式,用 XML-RPC 來使用該網站的某些功能。比方說 flickr 的 API 就是使用這種方式。

XML-RPC 基本形狀大約是長這樣:


< ?xml version="1.0"?>
< methodCall>
< methodName>這裡填入要呼叫的 procedure name< /methodName> 參數1 參數2 ... 參數n < /methodCall >

有的 XML-RPC service 允許你用 GET, REST, 或 POST 的方式來送出 request,不過在使用前還是要注意伺服器上要求你用何種方式來送。

WordPress 提供的 MetaWeblog API 為例,如果你要取得自己 blog 上所有的分類,你就可以透過 XML-RPC 來呼叫 WP 上列出所有分類的功能,並且回傳這些分類給你,用 XML-RPC 時要送出這樣的資料:(假設 blog 是 http://foo.wordpress.com)


POST /xmlrpc.php HTTP/1.1
Host: foo.wordpress.com
Content-Type: text/xml
Content-length: 333

< ?xml version="1.0"?>
< methodCall>
< methodName>metaWeblog.getCategories< /methodName> (Blog ID) (使用者名稱) (密碼) < /methodCall>

當你送出這樣的 request 後,Blog 就會回傳一個 XML 文件,裡面當然就是關於你分類的資訊,作一些簡單的 parse 就可以拿到所有分類的字串囉!