您现在的位置是: 软件 > 开发者网络 > 微软开发专栏 > Visual Studio.net专栏 > webservice > 正文


-不学Flash 照样做闪客
-Delphi 网络与通讯开发专辑
-明明白白注册表工具
-PHP优化与安全

用Perl和XML轻松开发多种界面的Web服务
2002-05-31· ·刘彦青编译··yesky

上一页  1 2 3 4  


  从RESTful客户端进行访问

  REST架构的爱好者会非常喜欢我们的应用程序能够提供访问未经转换的XML文档。







#!/usr/bin/perl -w
use strict;
use HTTP::Request::Common;
use LWP::UserAgent;

my ( $f1, $f2 ) = @ARGV;

usage() unless defined $f1 and -f $f1
and defined $f2 and -f $f2;


my $ua = LWP::UserAgent->new;
my $uri = "http://my.host.tld/cgi-bin/semdiff.cgi";


my $req = HTTP::Request::Common::POST( $uri,
Content_Type => 'form-data',
Content => [
file1 => [ $f1 ],
file2 => [ $f2 ],
passthru => 1,
semdiff_result => 1,
]
);
my $result = $ua->request( $req );

if ( $result->is_success ) {
print $result->content;
}
else {
warn "Request Failure: " . $result->message . "\n";
}

sub usage {
die "Usage:\nperl $0 file1.xml file2.xml \n";
}
 

  该脚本(restful_semdiff.pl)能够将下面的XML文档输出到STDOUT:


<?xml version="1.0" encoding="UTF-8"?>
<document>
<difference>
<context>/root[1]/el1[1]</context>
<message>
Attribute 'el1attr' has different
value in element 'el1'.
</message>
<startline>3</startline>
<endline>3</endline>
</difference>
<difference>
<context>/root[1]/el2[1]</context>
<message>
Character differences in element 'el2'.
</message>
<startline>4</startline>
<endline>4</endline>
</difference>
...
</document>

  结论

  在本文中我们完全没有提到XML-RPC,原因有二个:

   第一,SOAP::Lite提供的XML-RPC客户端和服务器端界面与SOAP使用的非常相似,因此使用它意义不大。

   第二,与SOAP客户端不同的是,XML-RPC客户端没有与它们的请求相关联的标准和明确的HTTP头部,这意味着我们的CGI请求代理必须采取一定的措施来区分XML-RPC客户端和正常的互联网浏览器。通过对POST请求和“text/xml”的内容类型进行检查,探测XML-RPC请求是可能的,但这种方案是“不健壮的”。

  通过本篇文章的介绍,我衷心地希望读者能够掌握结合利用SOAP::Lite和CGI::XMLApplication创建简洁、模块化的支持通过SOAP、REST和HTML浏览器进行访问的应用程序的方法。


上一页  1 2 3 4  

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 开发工具开道--应用程序走进Web服务时代
 Web服务轻松进行企业应用集成
 Web服务器安全指南
 微软.NET Framework开创了XML Web服务的革命
 Visual Studio .NET快速地构建和部署XML Web服务和应用程序
 第二代Web服务展望
 .NET:微软大胆向Web服务的跳跃
 使用SQL Server 2000将现有代码作为Web服务提供
 构建高负载Web服务器
 使用UDDI的Web服务描述和发现之二
 使用UDDI的Web服务描述和发现之一
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!