Interop between PEAR-SOAP and Visual Studio - complex types

From: Date: Fri, 21 Oct 2005 09:32:13 +0000
Subject: Interop between PEAR-SOAP and Visual Studio - complex types
Groups: php.pear.general 
Request: Send a blank email to pear-general+get-21576@lists.php.net to get a copy of this message
Hi everybody, I try to register a complex type in PEAR-SOAP (array of integers), here's the resulting WSDL: <?xml version="1.0"?><definitions name="localhost" targetNamespace="urn:localhost" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="urn:localhost" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types xmlns="http://schemas.xmlsoap.org/wsdl/"> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:localhost"> <complexType name="dataObj"> <complexContent> <restriction base="SOAP-ENC:Array"> <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:int[]" /> </restriction> </complexContent> </complexType> </schema> </types> <message name="retObjRequest" /> <message name="retObjResponse"> <part name="return" type="xsd:dataObj" /> </message> <portType name="localhostPort"> <operation name="retObj"> <input message="tns:retObjRequest" /> <output message="tns:retObjResponse" /> </operation> </portType> <binding name="localhostBinding" type="tns:localhostPort"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <operation name="retObj"> <soap:operation soapAction="http://schemas.xmlsoap.org/soap/envelope/#ivwebservice#retObj" /> <input> <soap:body use="encoded" namespace="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body use="encoded" namespace="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> </binding> <service name="localhostService"> <documentation /> <port name="localhostPort" binding="tns:localhostBinding"> <soap:address location="http://localhost/code/web_service.php" /> </port> </service> </definitions> But when this WSDL is fed into Visual Studio 2003, retObj() method is declared as "public string retObj()" - and of course fails because returned type (array of int) cannot be cast to a string. I have this problem with all other registered types as well - Visual Studio simply uses string for anything except basic types like "int", "float" etc. Is there a way to make Visual Studio understand complex types? I'd really appreciate any help. Artyom

« previous php.pear.general (#21576) next »