[Xml-compile] $wsdl->operation fails with "Not a HASH reference..."

Mark Overmeer mark at overmeer.net
Sat Nov 16 22:16:52 GMT 2013


* Reiber Christian (Christian.Reiber at zeppelin.com) [131115 22:00]:
> when running any WSDL in $wdsl->operation or
> $wsdl->compileClient I end up with "Not a HASH reference at
> /home/zarbr/SOAP/perl/lib/perl5/site_perl/5.10.0/XML/Compile/WSDL11.pm
> line 229".  $port at that point contains
  ...
> I found the post on gmane.org which describes the same issue but my
> "hooray" was premature... I nowhere found the "use ...::SOAP" vs. "use
> ...::SOAP11" in the code.

There are a whole bunch of schema's you may or may not need.  The WSDL
schema only says 'any', so what can we really expect there in this
particular WSDL?  You have to load them explicitly.

On a few spots I already have checks that everything is loaded, but
apparently there is room for improvement.  I now added this:

    my $port;
    my @ports     = @{$service->{wsdl_port} || []};
 +  if(my $not = first {blessed $_} @ports)
 +  {   error __x"not all name-spaces loaded, {ns} not parsed in port"
 +        , ns => $not->namespaceURI;
 +  }

    my @portnames = map $_->{name}, @ports;
    if(my $portname = delete $args{port})
    {   $port = first {$_->{name} eq $portname} @ports;

ok?
-- 
Regards,
               MarkOv

------------------------------------------------------------------------
       Mark Overmeer MSc                                MARKOV Solutions
       Mark at Overmeer.net                          solutions at overmeer.net
http://Mark.Overmeer.net                   http://solutions.overmeer.net




More information about the Xml-compile mailing list