metaweblog php,[PHP]利用MetaWeblog API实现XMLRPC功能
Windows Live Writer是一款小巧的寫博客的工具,非常方便,甚至網(wǎng)上看到過有的評(píng)論稱Live Writer是一款最不像微軟產(chǎn)品的微軟產(chǎn)品,呵呵,不管怎么說反正我是非常喜歡。
Writer支持MSN Spaces以及Wordpress之類的很多博客模板,但是如果是自己寫的博客系統(tǒng)呢,就像我的游戲版面,因此就如上一篇的RSS功能一樣,也需要親自動(dòng)手一下了。
非常不幸的是網(wǎng)上的資料非常少,而且全部是英文的,又參看了其他博客模板的XMLRPC功能的源代碼,有了一點(diǎn)點(diǎn)的基本了解。
XMLRPC協(xié)議直白的講是一個(gè)遠(yuǎn)程通訊用的標(biāo)準(zhǔn),通訊的雙方都使用XML格式來交流,而為了使雙方的程序都明白數(shù)據(jù)的內(nèi)容,需要有一個(gè)格式的約束,這個(gè)約束就是XMLRPC標(biāo)準(zhǔn)。
XMLRPC有很多應(yīng)用的領(lǐng)域,其中之一便是Blogger API,Blogger API是遵守XMLRPC協(xié)議的一種用來進(jìn)行博客寫作的應(yīng)用程序接口,而MetaWeblog API同樣是這樣一組應(yīng)用程序接口,當(dāng)然,對(duì)Blogger API在功能上進(jìn)行了一定的擴(kuò)充。
http://www.xmlrpc.com/? 這里是XMLRPC的官網(wǎng),關(guān)于Blogger API和MetaWeblog API的詳細(xì)內(nèi)容也都可以在這里完整的查到。
Live Writer作為博客寫作的客戶端,支持很多種用于博客寫作的API接口,今天我的方法便是使用MetaWeblog API來實(shí)現(xiàn)的。
Writer和博客之間整個(gè)的工作流程很簡(jiǎn)單,每當(dāng)Writer發(fā)出工作請(qǐng)求的時(shí)候,會(huì)發(fā)出一個(gè)XML格式的消息,當(dāng)博客程序接收到消息后,進(jìn)行處理(用戶編寫),然后再返回一個(gè)XML格式的消息,告知客戶端工作進(jìn)行的怎么樣,就這么簡(jiǎn)單,我們要做的工作就是正確的分析客戶端發(fā)來的XML消息,然后進(jìn)行相應(yīng)的數(shù)據(jù)庫(kù)處理,最后再返回一個(gè)正確的XML消息。
那么首先,需要有XML解析的功能,還要保證符合XMLRPC協(xié)議,這可是個(gè)工程量浩大的活兒,網(wǎng)上有很多已經(jīng)封裝好的庫(kù)可以使用,也可以在XMLRPC給出的Library基礎(chǔ)上編寫,可以事半功倍,我用的是一個(gè)應(yīng)該是愛好者吧,自己用PHP編寫的XML-RPC Library(http://keithdevens.com/software/xmlrpc)
MetaWeblog API一共有6個(gè)程序接口,分別是:
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)
函數(shù)的用途正如其名,很好理解,上面三個(gè)函數(shù)是必須實(shí)現(xiàn)的,下面的三個(gè)是可選的,另外還有一個(gè)必須實(shí)現(xiàn)的函數(shù)是blogger.getUsersBlogs,這個(gè)是原屬于Blogger API的。關(guān)于細(xì)節(jié)包括參數(shù),返回值的要求,大家參看官網(wǎng)(http://www.xmlrpc.com/metaWeblogApi),不難理解,這里不再贅述了。
后面的工作就是正確的分析消息然后進(jìn)行相應(yīng)的操作就行,有點(diǎn)不太好講清楚,所以我還是把源代碼給出,里面寫了詳細(xì)的注釋,相信能一目了然的。
MetaWeblogAPI.php
另外要注意的是一定要保證返回的XML消息格式的正確,如果程序總是出錯(cuò),大家可以用echo來debug。
例子中metaWeblog.newMediaObject我沒有來得及實(shí)現(xiàn),所以貼圖要使用FTP來實(shí)現(xiàn),Writer中可以進(jìn)行設(shè)置,還有在Writer建立賬戶過程中如果提示下載樣式的話,就不要下載了,好像在字符上會(huì)有些問題,目前沒有做任何處理,呵呵,很基本的實(shí)現(xiàn)。
在最后給出一個(gè)blogger.getUsersBlogs函數(shù)客戶端發(fā)來消息以及返回值的一個(gè)正確的格式,以供參考:
客戶端消息:
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
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的metaweblog php,[PHP]利用MetaWeblog API实现XMLRPC功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php js 比较大小写,JavaScr
- 下一篇: oracle集群rac无法访问,解决Or