Hello all, I have developed a Web service with VB6 and MS Soap Toolkit 3.0. When I test it with XMLSpy or a VB6 Client, it works fine. Now one of my collaegues is trying to access it using AXIS. It fails (Restoring data into SoapMapper _pDiversity failed). His SOAP input looks like this: SOAP IN ------- <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <ns1:DiversitySmiles soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/message/"> <ns1:DiversityInput href=""/> </ns1:DiversitySmiles> <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:_pDiversity" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/type/"> <NumberOfMolecules xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[1]"> <item>1</item> </NumberOfMolecules> <PropertiesToUse xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[1]"> <item>clogp</item> </PropertiesToUse> <SMILES xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[2]"> <item>OC(=O)CC=O)C(O)=O</item> <item>OC(=O)CC=O)C(O)</item> </SMILES> </multiRef> </soapenv:Body> </soapenv:Envelope> ------------ But when I edit this line in the SOAP message manually: <ns1:DiversityInput href=""/> to <DiversityInput href=""/> , in other words, I remove the namespace of the complex type "DiversityInput", it works! The WSDL file looks like this and has been generated by the WSDL Generator of the SOAP Toolkit 3.0: <wsdl:definitions xmlns:wsdlns="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/wsdl/" xmlns:typens="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/type/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:stk="http://schemas.microsoft.com/soap-toolkit/wsdl-extension" xmlns:dime="http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/" xmlns:ref="http://schemas.xmlsoap.org/ws/2002/04/reference/" xmlns:content="http://schemas.xmlsoap.org/ws/2002/04/content-type/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/wsdl/" name="PILOT_SOAP"> <wsdl:types> <schema targetNamespace="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/type/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <import namespace="http://schemas.xmlsoap.org/wsdl/"/> <import namespace="http://schemas.xmlsoap.org/ws/2002/04/reference/"/> <import namespace="http://schemas.xmlsoap.org/ws/2002/04/content-type/"/> <complexType name="ArrayOfstring"> <complexContent> <restriction base="SOAP-ENC:Array"> <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="string[]"/> </restriction> </complexContent> </complexType> <complexType name="_pDiversity"> <sequence> <element name="NumberOfMolecules" type="typens:ArrayOfstring"/> <element name="PropertiesToUse" type="typens:ArrayOfstring"/> <element name="SMILES" type="typens:ArrayOfstring"/> </sequence> </complexType> <complexType name="_PilotParameter"> <sequence> <element name="values" type="typens:ArrayOfstring"/> </sequence> </complexType> </schema> </wsdl:types> <message name="Diversity.DiversitySmiles"> <part name="DiversityInput" type="typens:_pDiversity"/> </message> <message name="Diversity.DiversitySmilesResponse"> <part name="OutputSMILES" type="typens:_PilotParameter"/> </message> <message name="Diversity.GetPropertiesToUse"> <!--part name="PossiblePropertiesToUse" type="typens:_PilotParameter"/--> </message> <message name="Diversity.GetPropertiesToUseResponse"> <part name="PossiblePropertiesToUse" type="typens:_PilotParameter"/> </message> <portType name="DiversitySoapPort"> <operation name="DiversitySmiles" parameterOrder="DiversityInput OutputSMILES"> <input message="wsdlns:Diversity.DiversitySmiles"/> <output message="wsdlns:Diversity.DiversitySmilesResponse"/> </operation> <operation name="GetPropertiesToUse" parameterOrder="PossiblePropertiesToUse"> <input message="wsdlns:Diversity.GetPropertiesToUse"/> <output message="wsdlns:Diversity.GetPropertiesToUseResponse"/> </operation> </portType> <binding name="DiversitySoapBinding" type="wsdlns:DiversitySoapPort"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="DiversitySmiles"> <soap:operation soapAction="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/action/Diversity.DiversitySmiles"/> <input> <soap:body parts="DiversityInput" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/message/"/> </input> <output> <soap:body parts="OutputSMILES" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/message/"/> </output> </operation> <operation name="GetPropertiesToUse"> <soap:operation soapAction="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/action/Diversity.GetPropertiesToUse"/> <input> <soap:body parts="" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/message/"/> </input> <output> <soap:body parts="PossiblePropertiesToUse" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://bmdcs2.janbe.jnj.com/PILOT_SOAP/message/"/> </output> </operation> </binding> <service name="PILOT_SOAP"> <port name="DiversitySoapPort" binding="wsdlns:DiversitySoapBinding"> <soap:address location="http://bmdcs2/protocolwebservice/PILOT_SOAP.WSDL"/> </port> </service> </wsdl:definitions> Is AXIS this behaviour a bug, is it a MS bug or is it just an icompatibility of the two? And above all, how can I (if at all) change my WSDL file so that the AXIS client does not generate the wrong SOAP call? Regards, Micha
Gratis webmail Klik hier