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