在PHP中利用XML技术构造远程服务(上)
(松下客 2001年05月18日 23:16)
未来的Web将是以服务为中心的Web,XML_RPC标准使得编写和应用服务变得非常简单。本文介绍XML_RPC标准及其PHP实现,并通过实例示范了如何在PHP中开发XML_RPC服务和客户程序。
一、服务式Web
从内容提供商所采用的简单方法到UDDI(Universal Description,Discovery and Integration)的未来构想,业界已经有大量关于“服务式Web”的说明和评论。就Web的初创阶段来说,它只是一个文档的集散地,提供的只是一些可浏览的信息。随着Web的发展,在Web上运行服务越来越具有吸引力。未来,Web将成为企业为客户和其他企业提供便捷服务的载体。B2B和B2C模式间的协同就可以看成是一种服务式Web。
一个很重要的问题是,Web上究竟可以提供哪些服务?Web能够提供的服务非常多,其中有些服务现在已经在使用,有些服务在不久的将来就会出现。为了说明问题,下面列出了一小部分可以通过Web提供的服务:
面向主题的垂直搜索引擎。 |
供用户查找信息的知识库。 |
用户可以请教问题的专家系统。 |
银行服务。 |
新闻和信息出版服务。 |
数字化支付相关的服务。 |
图形处理服务。 |
卫生和健康服务。 |
3.1 XML_RPC请求 |
<?xml version="1.0" ?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>41</i4></value> </param> </params> </methodCall> |
标记 | 说明 |
<i4>或<int> | 四字节的带符号整数,如12 |
<boolean> | 0(false),或1(true) |
<string> | 字符串,如“Hello World” |
<double> | 双精度带符号浮点数,如-12.214 |
<dateTime.iso8601> | 日期/时间,如19980717T14:08:55 |
<base64> | base64编码的二进制数据,如eW91IGbid0IHJlQgdGhpcyE |
3.1.1 结构
值可以是一个结构,结构用<struct>元素描述。每个<struct>包含多个<member>,每个<member>包含一个<name>和一个<value>。下面是一个由两个元素构成的结构:
<struct> <member> <name>name</name> <value><string>member1</string></value> </member> <member> <name>member2</name> <value><i4>19</i4></value> </member> </struct> |
<array> <data> <value><boolean>0</boolean></value> <value><i4>9</i4></value> <value><string>Hello</string></value> </data> </array> |
3.2 XML_RPC应答 |
<?xml version="1.0"?> <methodResponse> <params> <param> <value><string>ABCDEFG</string></value> </param> </params> </methodResponse> |
<fault> <value> <struct> <member> <name>faultCode</name> <value><int>4</int></value> </member> <member> <name>faultString</name> <value><string>Error!</string></value> </member> </struct> </value> </fault> |
标记 | 说明 |
<i4>或<int> | 四字节的带符号整数,如12 |
<boolean> | 0(false),或1(true) |
<string> | 字符串,如“Hello World” |
<double> | 双精度带符号浮点数,如-12.214 |
<dateTime.iso8601> | 日期/时间,如19980717T14:08:55 |
<base64> | base64编码的二进制数据,如eW91IGbid0IHJlQgdGhpcyE |
3.1.1 结构
值可以是一个结构,结构用<struct>元素描述。每个<struct>包含多个<member>,每个<member>包含一个<name>和一个<value>。下面是一个由两个元素构成的结构:
<struct> <member> <name>name</name> <value><string>member1</string></value> </member> <member> <name>member2</name> <value><i4>19</i4></value> </member> </struct> |
<array> <data> <value><boolean>0</boolean></value> <value><i4>9</i4></value> <value><string>Hello</string></value> </data> </array> |
3.2 XML_RPC应答 |
<?xml version="1.0"?> <methodResponse> <params> <param> <value><string>ABCDEFG</string></value> </param> </params> </methodResponse> |
<fault> <value> <struct> <member> <name>faultCode</name> <value><int>4</int></value> </member> <member> <name>faultString</name> <value><string>Error!</string></value> </member> </struct> </value> </fault> |