Perl Soap :: Schema输出

时间:2015-12-24 13:35:33

标签: perl web-services soap wsdl schema

要调用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地址的跟随错误:

第8行,第2列,第84行的标记不匹配/usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/XML/Parser.pm第187行

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

2 个答案:

答案 0 :(得分:1)

道歉,这只是一个部分答案 - 因为您提供的的网址有效,但您遇到的错误特别是您提取的不是<的XML问题/ em>解析。

回到基础:

#!/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不是问题所在。

答案 1 :(得分:0)

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