Skip Menu |

This queue is for tickets about the SOAP-WSDL CPAN distribution.

Report information
The Basics
Id: 63535
Status: open
Priority: 0/
Queue: SOAP-WSDL

People
Owner: Nobody in particular
Requestors: cpan698301 [...] mstier.de
Cc:
AdminCc:

Bug Information
Severity: Critical
Broken in: 2.00.10
Fixed in: (no value)



Subject: found unrecognised attribute {http://schemas.xmlsoap.org/wsdl/}arrayType (ignored) at...
use SOAP::WSDL; my $soap = SOAP::WSDL->new(wsdl => $service_address); gives on execution: found unrecognised attribute {http://schemas.xmlsoap.org/wsdl/}arrayType (ignored) at /home/perl/5.12.2/lib/site_perl/5.12.2/SOAP/WSDL/Base.pm line 130. The corresponding WSDL is attached.
Subject: WSDL_arraytest.xml
<?xml version="1.0" encoding="utf-8"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="MyCompany.SubDivision" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="MyCompany.SubDivision" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">some description</wsdl:documentation> <wsdl:types> <xsd:schema elementFormDefault="qualified" targetNamespace="MyCompany.SubDivision"> <xsd:complexType name="Description"> <xsd:sequence> <xsd:element minOccurs="1" maxOccurs="1" name="some_id" type="xsd:integer" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ArrayOfDescription"> <xsd:complexContent mixed="false"> <xsd:restriction base="SOAP-ENC:Array"> <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:Description[]" /> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:element name="DeleteServer"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="1" maxOccurs="1" name="strMACAddress" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="DeleteServerResponse"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="1" maxOccurs="1" name="status" type="xsd:integer" /> <xsd:element minOccurs="1" maxOccurs="1" name="errmessage" type="xsd:string" /> <xsd:element minOccurs="1" maxOccurs="1" name="content" type="tns:ArrayOfDescription" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="DeleteServerSoapIn"> <wsdl:part name="parameters" element="tns:DeleteServer" /> </wsdl:message> <wsdl:message name="DeleteServerSoapOut"> <wsdl:part name="parameters" element="tns:DeleteServerResponse" /> </wsdl:message> <wsdl:portType name="MyCompany.SubDivisionSoap"> <wsdl:operation name="DeleteServer"> <wsdl:input message="tns:DeleteServerSoapIn" /> <wsdl:output message="tns:DeleteServerSoapOut" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="MyCompany.SubDivisionSoap" type="tns:MyCompany.SubDivisionSoap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="DeleteServer"> <soap:operation soapAction="MyCompany.SubDivision/DeleteServer" style="document" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="MyCompany.SubDivision"> <wsdl:port name="MyCompany.SubDivisionSoap" binding="tns:MyCompany.SubDivisionSoap"> <soap:address location="http://127.0.0.1/soap/server_arraytest.php" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
the following modification on SOAP::WSDL::Base was a solution in my case: diff /usr/share/perl5/SOAP/WSDL/Base.pm Base.pm 131c131,132 < next; --- Show quoted text
> next if $value->{LocalName} ne 'Action'; > ($value->{ LocalName }) = ($value->{ Value
}=~/.*\/(\w+)$/); 136c137 < $self->$method( $value->{ Value } ); --- Show quoted text
> $self->$method( $value->{ Value } ) if $self->can($method);
regards, palik