metaweblog php,[PHP]利用MetaWeblog API实现XMLRPC功能
Windows Live Writer是一款小巧的寫博客的工具,非常方便,甚至網上看到過有的評論稱Live Writer是一款最不像微軟產品的微軟產品,呵呵,不管怎么說反正我是非常喜歡。
Writer支持MSN Spaces以及Wordpress之類的很多博客模板,但是如果是自己寫的博客系統呢,就像我的游戲版面,因此就如上一篇的RSS功能一樣,也需要親自動手一下了。
非常不幸的是網上的資料非常少,而且全部是英文的,又參看了其他博客模板的XMLRPC功能的源代碼,有了一點點的基本了解。
XMLRPC協議直白的講是一個遠程通訊用的標準,通訊的雙方都使用XML格式來交流,而為了使雙方的程序都明白數據的內容,需要有一個格式的約束,這個約束就是XMLRPC標準。
XMLRPC有很多應用的領域,其中之一便是Blogger API,Blogger API是遵守XMLRPC協議的一種用來進行博客寫作的應用程序接口,而MetaWeblog API同樣是這樣一組應用程序接口,當然,對Blogger API在功能上進行了一定的擴充。
http://www.xmlrpc.com/? 這里是XMLRPC的官網,關于Blogger API和MetaWeblog API的詳細內容也都可以在這里完整的查到。
Live Writer作為博客寫作的客戶端,支持很多種用于博客寫作的API接口,今天我的方法便是使用MetaWeblog API來實現的。
Writer和博客之間整個的工作流程很簡單,每當Writer發出工作請求的時候,會發出一個XML格式的消息,當博客程序接收到消息后,進行處理(用戶編寫),然后再返回一個XML格式的消息,告知客戶端工作進行的怎么樣,就這么簡單,我們要做的工作就是正確的分析客戶端發來的XML消息,然后進行相應的數據庫處理,最后再返回一個正確的XML消息。
那么首先,需要有XML解析的功能,還要保證符合XMLRPC協議,這可是個工程量浩大的活兒,網上有很多已經封裝好的庫可以使用,也可以在XMLRPC給出的Library基礎上編寫,可以事半功倍,我用的是一個應該是愛好者吧,自己用PHP編寫的XML-RPC Library(http://keithdevens.com/software/xmlrpc)
MetaWeblog API一共有6個程序接口,分別是:
metaWeblog.newPost (blogid, username, password, struct, publish)
metaWeblog.editPost (postid, username, password, struct, publish)
metaWeblog.getPost (postid, username, password)
metaWeblog.newMediaObject (blogid, username, password, struct)
metaWeblog.getCategories (blogid, username, password)
metaWeblog.getRecentPosts (blogid, username, password, numberOfPosts)
函數的用途正如其名,很好理解,上面三個函數是必須實現的,下面的三個是可選的,另外還有一個必須實現的函數是blogger.getUsersBlogs,這個是原屬于Blogger API的。關于細節包括參數,返回值的要求,大家參看官網(http://www.xmlrpc.com/metaWeblogApi),不難理解,這里不再贅述了。
后面的工作就是正確的分析消息然后進行相應的操作就行,有點不太好講清楚,所以我還是把源代碼給出,里面寫了詳細的注釋,相信能一目了然的。
MetaWeblogAPI.php
另外要注意的是一定要保證返回的XML消息格式的正確,如果程序總是出錯,大家可以用echo來debug。
例子中metaWeblog.newMediaObject我沒有來得及實現,所以貼圖要使用FTP來實現,Writer中可以進行設置,還有在Writer建立賬戶過程中如果提示下載樣式的話,就不要下載了,好像在字符上會有些問題,目前沒有做任何處理,呵呵,很基本的實現。
在最后給出一個blogger.getUsersBlogs函數客戶端發來消息以及返回值的一個正確的格式,以供參考:
客戶端消息:
POST /api/RPC2 HTTP/1.0
User-Agent: Java.Net Wa-Wa 2.0
Host: plant.blogger.com
Content-Type: text/xml
Content-length: 515
blogger.getUsersBlogs
C6CE3FFB3174106584CBB250C0B0519BF4E294
ewilliams
secret
返回值:
HTTP/1.1 200 OK
Connection: close
Content-Length: 125
Content-Type: text/xml
Date: Mon, 6 Aug 20001 19:55:08 GMT
Server: Java.Net Wa-Wa/Linux
url
http://www.ownself.org/game
blogid
5467
blogName
OWNSELF Game
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的metaweblog php,[PHP]利用MetaWeblog API实现XMLRPC功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php js 比较大小写,JavaScr
- 下一篇: oracle集群rac无法访问,解决Or