Perl Soap::模式输出



要调用web服务,我总是使用SOAP::Schema并使用返回的参数,如下所示:

my $wsdl     = "wsdl adres";
my $schema   = SOAP::Schema->new( schema_url => $wsdl )->parse();
my $services = $schema->services();
my $first_key = undef;
foreach my $key (keys %$services) {
 $first_key = $key unless ($first_key);
}
my $proxy      = "$$services{$first_key}{$method}{endpoint}";
my $uri        = "$$services{$first_key}{$method}{soapaction}";
my $ns         = "$$services{$first_key}{$method}{namespace}";
my $parameters = $$services{$first_key}{$method}{parameters};
my $soap = SOAP::Lite
    -> on_action( sub { join '/', @_ } )
    -> readable(1)
    -> uri($uri)
    -> proxy($proxy)
    -> ns("http://schemas.xmlsoap.org/soap/envelope/","soapenv")
    -> ns($ns);

它总是有效的,但现在我对一个新的wsdl地址出现了以下错误:

在/usr/lib/perl5/vendor_perl/5.8.5/i386-linux-read-multi/XML/Parser.pm第187行的第8行第2列字节84处的标记不匹配

可能有什么问题?wsdl定义是正确的,因为当我从SOAPUI尝试时它是有效的。

抱歉,这只是部分答案-因为您提供的URL确实有效,但您的错误是您提取的XML的问题,而不是解析。

所以回到基础:

#!/usr/bin/env perl
use strict; 
use warnings 'all';
use LWP::Simple;
use XML::Twig; 
my $url = 'http://xperiaclub.com/Service/Service1.svc?singleWsdl';
my $content = get ( $url );
my $twig = XML::Twig -> parse ( $content );
$twig -> set_pretty_print ( 'indented_a');
$twig -> print;

如果内容是无效的XML,这将出错——事实并非如此,它运行良好。我知道,这不能回答你的问题。

所以这个XML不是问题。

问题出在我的服务器上。我的服务器正在将URL重定向到错误的URL,找不到xml,出现此错误

最新更新