曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
X M L - R P C的实现是基于HTTP POST方法的,消息体使用X M L标记,其包含着在远程服务
器上执行的方法和这些方法所使用的全部参数。返回的响应也是基于X M L的。
一个过程的参数和返回值也可以是简单的数据形式,例如:逻辑型、整型、字符串、浮点
型和日期型,也可以是较复杂的数据结构,例如通过数组和结构实现的复杂的记录和列表结构,
事实上,二进制数同样能被B a s e 6 4编码表示,并且允许,例如,对于一个方法调用返回一个图
像。
B a s e 6 4编码用于将二进制数据转换成A S C I I文本,由于通过S M T P服务器和另外一些文本
协议传送,所以没有数据被误解。B a s e 6 4编码也是通过X M L - R P C传送二进制编码消息的
标准,例如GIF和JPEG。在本章最后,将做更多的描述。
这个标准的另一个重要部分是必须有一个返回值,它可能是一个结构,并由许多结果值组
成。
该标准包含了H T T P报头要求、X M L - R P C请求、有效负载格式、X M L - R P C响应和错误处
理。
1. 报头要求
U R I(Universal Resource Identifier)格式中报头的第一行是不指定的,如果服务器仅处理
X M L - R P C调用,它能为空或者是一个单斜线。但是如果服务器处理一个混合的H T T P请求,那
么我们将使用U R I去指定指向代码的路径,该代码处理X M L - R P C请求。X M L - R P C请求必须是通
过H T T P标准的P O S T方法。
一个用户代理( U s e r- A g e n t)和主机( H o s t )必须被指定,内容形式( C o n t e n t - Ty p e)将是
t e x t / x m l。最后,正确的内容长度( Co n t e n t - l e n g t h)应被给出。
让我们看一个实现报头要求的例子:
程序清单11 -8
从运行在Windows NT上的F r o n t i e r客户调用在u s e r l a n d . c o m中名叫b e t t y的服务器,上面这个
例子指定了R P C 2作为X M L - R P C请求的响应。C o n t e n t - Ty p e(内容形式)被正确的指定为
t e x t / x m l,Co n t e n t - l e n g t h(内容长度)为1 8 1,这是一个合法的X M L - R P C请求。
2. 请求格式
434使用XML 高级编程
下载
该请求指定了结构为X M L并且使用X M L标准1 . 0版。全部的请求应包括在一个< m e t h o d C a l l >
元素中,它必须包含一个子元素< m e t h o d N a m e >,该子元素包含了一个字符串,它描述了一个将
被激活的远程方法的名字。对于服务器,它正确地标明了一个方法的名字,合法字符为A ~ Z、
0 ~ 9下划线、逗号、冒号和斜线( X M L经常对第一个字符加以限制)。
如果这个方法含有参数, < m e t h o d C a l l >元素必须包含一个< p a r a m s >元素,该元素依次可以
包含一个或者多个< p a r a m >元素,每一个均有一个< v a l u e >主题,它们的顺序被该方法接口所定
义,下面是一个请求的模板:
程序清单11 -9
3. 参数指定
被指定作为参数的值被分为标量、数组和结构,而标量形式有:
• 整型。
• 逻辑型。
• 字符串型。
• 双精度型。
• 日期/时间型。
• Base 64。
我们将依次介绍各种形式。
(1) 整型
在X M L - R P C中的整型是一个四字节有符号整数,由< i 4 >或< i n t >元素来指明, 0只有一位,
并且不允许有空白,例如:
程序清单11 - 1 0
你可能发现一个奇怪的现象:数据形式没有表示成一种属性,可能在普通的X M L - R P C规
第11章服服务器到服务器使用435 下载
范里缺乏属性。这只是因为标准的作者并没有使用。
属性真的是比元素更有用处吗?在X M L - R P C领域里有许多相关的讨论,但是到目前为止
并没有动议使用它们。
(2) 布尔型(逻辑型)
布尔型在< b o o l e a n >元素里被指明,“错误”用“0”表示,“正确”用“1”表示,例如:
程序清单11 - 11
(3) 字符串型
字符串被封闭在一个< s t r i n g >元素里,必须由合法的A S C I I值组成,但是由于X M L - R P C必须
是合法的X M L特殊字符,所以例如“ <”和“&”必须被编码成“& l t”和“& a m p”。目前在
X M L - R P C里编码没有被指定,因此解析器将使用默认的编码。在X M L - R P C中,编码类形并不
需要被指定,尽管这是一个在X M L - R P C中被多次讨论的问题。因此, X M L默认的U T F - 8编码将
被使用,它对于绝大多数的消息都是有效的,下面是一个典型的例子:
程序清单11 - 1 2
(4) 双精度型
双精度型在X M L中定义为双精度带符号浮点数,在< d o u b l e >元素里被指明。双精度型不能
包含空格,它包含一个正号或负号,一连串的数字符号,一个小数点和任意位小数(范围取决
于使用情况,并没有被指定),该数据类型的使用情况如下面这个例子:
程序清单11 - 1 3
436使用XML 高级编程
下载
(5) 日期/时间型
日期和时间在< d a t e Ti m e . i s o 8 6 0 1 >中被指明,是i s o 8 6 0 1标准的一个子集,该类型对于任何
I n t e r n e t商务系统都是非常重要的,它的格式是: Y Y Y Y M M D D T H H 2 4 : M M : S S,通过X M L - R P C
传送特定的日期和时间消息是非常容易的。有关时区的消息将被服务器或文档所指定,在该元
素里并无描述。下面是一个例子:
程序清单11 - 1 4
(6) 64进制
我们能通过X M L - R P C使用Base 64标准来传送二进制编码消息,例如G I F和J P E G,它必须被
指定为二进制文件(如下面这个例子)。< b a s e 6 4 >元素用于指定编码数据,该例没有使用真正的
编码图像。
程序清单11 - 1 5
(7) 数组
在X M L - R P C中,一个< a r r a y >包含唯一的< d a t a >元素,而该元素又包含一些内含参数的
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML高级编程上(139)