曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
< v a l u e >元素。不同的类型在一个数组中能够被混合。如果一个< a r r a y >元素包含一个数组或结构,
它们甚至能被递归。数组适用于两种情况:一是将传送的数据(例如关于一个对象的状态消息)
由一系列的参数所组成,而这些参数在设计时并不知道;二是参数很多,而你希望以数组形式
传送它们而不是采取分散的个体形式,下面是一个例子:
第11章服服务器到服务器使用437 下载
程序清单11 - 1 6
(8) 结构
结构允许你对于值的顺序采取一些智能的办法,它不像数组,数据有一个简单的顺序,结
构在< s t r u c t >元素中指定,它包含一个或几个< m e m b e r >元素(并无数量限制)。其中,依次序有
< n a m e >和< v a l u e >元素保存数据,像数组一样,结构是可递归的,并且也能包含数组,下面是一
个有关X M L - R P C结构的例子:
程序清单11 - 1 7
438使用XML 高级编程
下载
看了上面这些代码,你可能想到X M L方法能够减少许多冗余,如:
程序清单11 - 1 8
对于X M L规范,有许多理由使之没有以这样的方式进行定义。其中之一是X M L - R P C结构定
义的方式与传统编程语言里的结构(或者目录对象)十分相似,在传统的编程语言里我们有明
确的名字/值对。
4. 响应的报头
响应的第一行将是一个合法的2 0 0OK的H T T P的报头(除非服务器自身有一个低级错误),
下面是t e x t / x m l的C o n t e n t - Ty p e(内容形式)和一个正确的C o n t e n t - l e n g t h(内容长度),下面是一
个例子(D a t e和S e r v e r是随意的):
程序清单11 - 1 9
5. 响应的格式
响应的有效负载必须有一个结构。结构中, < m e t h o d R e s p o n s e >元素能够包含一个唯一的
< p a r a m s >元素,该元素又封装一个唯一的< p a r a m >元素,该< p a r a m >元素又包含唯一的< v a l u e >
元素。
程序清单11 - 2 0
第11章服服务器到服务器使用439 下载
如果有错误,响应也能包含出错信息,我们看一下这个方面的有关问题。
6. 出错响应
既然可以进行成功响应,那响应也能够返回一个出错消息。在<method Response>元素里包
含一个< f a u l t >元素,该< f a u l t >元素又包含一个< v a l u e >元素, < v a l u e >元素包含一个含有两个数
据的< s t r u c t >元素,一个用< i n t >值调用错误代码( f a u l t C o d e);另一个字符串叫做f a u l t S t r i n g来
指明出错理由。
下面是一个例子:
程序清单11 - 2 1
11.3.4 XML-RPC的实现
X M L - R P C被分成两个组件,叫做客户和服务器,客户独立于服务器。因此一个运行在
Windows NT服务器上的C O M客户能够调用在Unix Apache服务器上的P e r l编写的方法。
X M L - R P C可通过P y t h o n、J a v a、P e r l、Tc l、A S P、C O M和P H P实现。对于每一种方式的进
一步描述参见X M L - R P C部分的“到哪里去”一节。
1. 一个简单的例子
下面这个例子将对以上某些语言加以说明并显示如何调用一个远程的方法,该方法返回了
储蓄账户的余额。该例将分成“ X M L请求”、“客户的实现”、“X M L响应”、“服务器的实现”等
几个方面。
这个例子是基于A S P和MS IIS的,虽然能使用另外的技术编写服务器并使用上述的客户机制
进行调用—只要接口定义保持不变,就没有问题。就是一个漂亮的X M L - R P C。
在开始这个例子之前,在We b服务器上,把所有的例子文件放到目录< r o o t > / x m l r p c / c l i e n t /下,
并且从指定的U R L上下载A S P客户/服务器文件(U R L在下面的“到哪里去”部分给出),其中要
440使用XML 高级编程
下载
保证x m l r p c . a s p文件也在目录< r o o t > / x m l r p c / c l i e n t /下。
同样,在同一个U R L下,使用R e g S v r 3 2实用程序注册C O M组件。保证安装指令(装载I E 5等)
使你能成功地装载R P C工具。
注意注册这个组件,打开一个命令行窗口,输入
RegSvr32 <component name>.dll
将会弹出一个消息窗口告知这个组件已被成功注册。
(1) XML请求
对于该例,下面这段代码将描述了X M L - R P C的请求,在此我们将调用一个称为G e t C u r r e n t
B a l a n c e()的本地方法,该方法接受一个账号作为参数。
程序清单11 - 2 2
我们看到希望调用的方法称为G e t C u r r e n t B a l a n c e(),并将账号定义为双精度型。
在目标平台上使用X M L - R P C方法,开发商仅仅需要提供参数和方法。实际的XML代码将
被扩展成起始方法调用的一部分, H T T P的P O S T方法将用来代表用户。让我们看一看怎样通过
使用四种语言即A S P、C O M ( V B )、J a v a和P H P实现该功能的。
如果想按自己的方法试验一个例子,可以参见“到哪里去”一节,并下载合适的X M L -
RPC工具。
(2) ASP
程序清单11 - 2 3
(3) COM(Visual Basic)
第11章服服务器到服务器使用441 下载
程序清单11 - 2 4
(4) Java语言
程序清单11 - 2 5
(5) PHP
程序清单11 - 2 6
(6) XML响应
X M L对于上面请求的响应有如下结构:
程序清单11 - 2 7
如果在调用中存在问题,将收到一个如下的响应。下面的X M L说明在与X M L - R P C服务器联
系时出现一个问题:
442使用XML 高级编程
下载
程序清单11 - 2 8
因为以上的错误代码和错误串是一个Wi n 3 2错误,因此你将把调用打包在一个错误处理程序
中,应该对正在使用的特定的X M L - R P C工具参照错误描述进行检查。
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML高级编程上(140)