热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[PHP]利用MetaWeblogAPI实现XMLRPC功能

[PHP]利用MetaWeblogAPI实现XMLRPC功能|OWNSELF[PHP]利用MetaWeblogAPI实现XMLRPC功能WindowsLiveWriter是一款小巧

[PHP]利用MetaWeblog API实现XMLRPC功能 | OWNSELF

[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
                               

                           

                       

                   

               

           

       
   




推荐阅读
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • Php怎么编写乘法表
    后端开发|PHP问题php,乘法表后端开发-PHP问题传世登陆器源码,vscode设置字号,ubuntu系统创建不了文件,tomcat配置修改,sqlite怎么调中文,海洋采集插件 ... [详细]
  • SoIhavealoopthatrunsperfectforeventsandonlyshowsfutureposts.TheissueisthatIwould ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • PHP WEB项目文件夹上传下载解决方案
    PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。1.file_uploadsonoff是否允许通过http方式上传文件2.max_execution_time3 ... [详细]
  • c# java socketn 字节流_C#Socket编程详解(一)TCP与UDP简介
    一、TCP与UDP(转载)1、TCP1.1定义TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低 ... [详细]
author-avatar
本人xiao13
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有