注册 | 登录 | 设为首页 | 加入收藏
您当前的位置:飞翔学院-IT中国 → IT资讯互联网 → 文章内容

增强你的SOAP::Lite Web服务

作者:佚名 来源:不详 发布时间:2007-10-13 17:10:22
作为一个有丰富Perl和Web服务经验的技术人员,我吃惊于SOAP::Lite会如此容易上手,容易运行。我还没有想到有哪个主要的SOAP工具包能有它容易使用,能像它一样可以快速部署,或者说能像它一样富于灵活性。使用SOAP::Lite安装Web服务的基础构件不用花很长时间,安装完毕后,你就可以使用这个工具包的其它特性。在下面的例子中,我会给你演示如何:
  • 通过名字访问参数元素。
  • 访问请求中的SOAP Header(报头)元素。
  • 将SOAP Header加到回应中。
  • 生成SOAP Fault。
  • 使用Document Style Encoding生成回应。
通过名字访问SOAP Body(主体)元素

缺省地,SOAP::Lite对SOAP请求方法的数据元素进行串并转换,并将它们放到一个通用数组里。这个数组被按照原样传递给请求句柄的子程序。这个子程序就能够访问这些参数,就像它能够访问其他任何带参数的输入一样。这样做就能很容易地为各种服务建立原型,但是其代价是灵活性的降低。如果你的方法有任何可选参数,如果你的方法有任何你需要访问的属性,或者如果传递给方法的参数并不依赖于顺序,那么这种额外的简单性所带来的麻烦要比其带来的好处更多。

SOAP::Lite为你通过名字访问请求中的元素提供了一个更加方便的方法。这增加了可以定义的服务接口类型的灵活性。下面这个例子会告诉你如何实现:

1 #!/usr/bin/perl
2 # Filename: Echo.pm
3 package Echo;
4 use strict;
5 use vars qw(@ISA);
6 @ISA = qw(SOAP::Server::Parameters);
7 sub echo {
8 my $self = shift;
9 my $envelope = pop;
10 my $str = $envelope->dataof("//echo/whatToEcho")->value;
11 return $str;
12 }
13 1;

通过第5和第6行里对SOAP::Server::Parameters包的扩展,你可以通过名字找出SOAP数据元素的分封线。要访问SOAP Body,首先将隐秘地传递给方法的SOAP分封线的对象弹出,然后调用一个dataof()子程序,用以返回对应于指定元素name/XPath的SOAP::Data对象,见第10行。由于dataof()返回的是一个SOAP::Data对象,你就能够访问SOAP::Data的所有子程序,包括value()name()type()uri()attr()等用于直接访问元素的值、元素的名字、元素的数据类型、元素的uri,以及所有元素各自的属性。


  • 打印文档
  • 推荐好友
  • 返回顶部
  • 增大字体
  • 减少字体
关于本站 | 工作机会 | 合作网站 | 广告服务 | 市场合作| 联系我们 | 抽奖活动
版权所有: 武汉威俊科技有限公司 Copyright 2005-2007 www.ITCNW.COM All rights reserved