用perl调用soap服务...
时间:2010-08-12 来源:pazzini
用Perl写了一段调用SOAP服务的代码。本来很简单的一个事情,研究了大概两天,主要还是对Perl不太熟。另外调用的这个SOAP服务比较奇怪,没有WSDL文件,也没有说明文档,我只是根据之前开发人员用Java写的一个例子改写的。
这里面有两个地方相对特殊,一是需要验证,二是直接将Soap消息(SOAP Envelop)发送给服务器端处理,具体代码如下:
use XML::Simple; use IO::File; use LWP::UserAgent; use HTTP::Request; use HTTP::Headers; open REQ, '<Req.xml'; my $input = ""; while (<REQ>) { chomp; $input = $input.$_."\n"; } #Generate HTTP Header my $h = HTTP::Headers->new(); $h->authorization_basic( $username, $password ); $h->header( SOAPAction => 'http://tempuri.org/Register' ); $h->content_type('text/xml;charset=utf-8'); #Generate Request, including method, address, header and so on my $request = HTTP::Request->new( POST, 'http://address', $h ); $request->protocol('HTTP/1.0'); $request->content($input); #Post the request my $userAgent = LWP::UserAgent->new(); my $response = $userAgent->request($request); #print the result my %keys = %{$response}; foreach $key ( keys %keys ) { print $key, "=>", $keys{$key}, "\n"; }