科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件用Perl和XML轻松开发多种界面的Web服务

用Perl和XML轻松开发多种界面的Web服务

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

与Web服务有关的的一个基本问题是如何创建一个既能够通过基于浏览器的客户端又能够通过编程方式让客户端自动访问应用程序。

作者:刘彦青编译 来源:yesky 2007年11月17日

关键字: 软件

  • 评论
  • 分享微博
  • 分享邮件
从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浏览器进行访问的应用程序的方法。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章