We got it working (for java) :-) We created a wsdl definition with java and compared it with wsdl definition created by Zend_Soap_AutoDiscover and modified all differences in Zend_Soap components until we got it working. Java seems to have a problem with following element:
<part name="getStaticStringReturn" type="xsd:string" /> We changed it to following because it was the main difference between the definitions: <part name="return" type="xsd:string" /> And now... it works fine :-) I also tested the modified "name"-value with Zend_Soap_Client and it works fine too. Now we have to wait for a test with Microsoft Dynamics AX. -- Jan -------- Original-Nachricht -------- > Datum: Tue, 25 Nov 2008 23:48:31 +0100 > Von: Benjamin Eberlei <[EMAIL PROTECTED]> > An: [email protected] > Betreff: Re: [fw-general] Cannot consume SOAP Service > this is very valueable input. thank you very much. > > I have to look into that. Unfortunatly the AutoDiscover and WSDL internals > are > in very bad shape to extend without easily breaking backwards compability, > so > i cannot assure you that I can include it in the next mini or minor > release. > > Do i understand you correctly, that it worked for you with Java, when you > switched from encoded to literal? > > greeetings > Benjamin > > On Tuesday 25 November 2008 21:23:30 Jan Pieper wrote: > > Hi guys, > > > > I created a small soap service with Zend_Soap_Server and > > Zend_Soap_AutoDiscover but I cannot consume its data via a java soap > > client. I tried it all the day but it won´t work. > > > > ----- SNIP ----- > > > > class MyFooService > > { > > /** > > * @return string > > */ > > public function getStaticString() { > > return 'Hello World'; > > } > > } > > > > ----- SNAP ----- > > > > It is accessable (for me!) via http://jason/Laboratory/JMS/service.php > > which is the service and http://jason/Laboratory/JMS/service.php?wsdl > which > > will show wsdl definition. The created wsdl definition looks like this: > > > > ----- SNIP ----- > > > > <?xml version="1.0"?> > > <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" > > xmlns:tns="http://jason/Laboratory/JMS/service.php" > > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" > > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > > name="MyFooService" > > targetNamespace="http://jason/Laboratory/JMS/service.php"> <portType > > name="MyFooServicePort"> > > <operation name="getStaticString"> > > <input message="tns:getStaticStringRequest" /> > > <output message="tns:getStaticStringResponse" /> > > </operation> > > </portType> > > <binding name="MyFooServiceBinding" type="tns:MyFooServicePort"> > > <soap:binding style="rpc" > > transport="http://schemas.xmlsoap.org/soap/http" /> > > <operation name="getStaticString"> > > <soap:operation > > > > soapAction="http://jason/Laboratory/JMS/service.php#getStaticString" /> > > <input> > > <soap:body use="literal" > > namespace="http://jason/Laboratory/JMS/service.php" > /> > > </input> > > <output> > > <soap:body use="literal" > > namespace="http://jason/Laboratory/JMS/service.php" > /> > > </output> > > </operation> > > </binding> > > <service name="MyFooServiceService"> > > <port name="MyFooServicePort" binding="tns:MyFooServiceBinding"> > > <soap:address > > location="http://jason/Laboratory/JMS/service.php" /> </port> > > </service> > > <message name="getStaticStringRequest" /> > > <message name="getStaticStringResponse"> > > <part name="getStaticStringReturn" type="xsd:string" /> > > </message> > > </definitions> > > > > ----- SNAP ----- > > > > As you can see I do not use Zend_Soap_AutoDiscover in its original > version > > (see attached MyAutoDiscover.diff, could not extend and use my own class > > because I need access to private class properties). I needed to change > > <soap:body use="encoded" encodingStyle="..." /> to <soap:body > use="literal" > > namespace="..." /> because wsimport (small tool included in jdk) cannot > > handle "encoded". So I used following command to create java classes > from > > wsdl definiton: > > > > # wsimport -keep http://jason/Laboratory/JMS/service.php?wsdl > > > > So I got this two java classes: > > > > # jason.laboratory.jms.service.MyFooServicePort.java > > # jason.laboratory.jms.service.MyFooServiceService.java > > > > After that I created a soap client using these classes (jdk1.6.0_10): > > > > ----- SNIP ----- > > > > package jason.laboratory.jms.myfooclient; > > > > import jason.laboratory.jms.service.*; > > > > public class MyFooClient > > { > > /** > > * @param args > > */ > > public static void main(String[] args) > > { > > MyFooServiceService mfss = new MyFooServiceService(); > > MyFooServicePort mfsp = mfss.getMyFooServicePort(); > > String result = mfsp.getStaticString(); > > > > if (result != null) { > > System.out.println("Result: " + result); > > } else { > > System.out.println("Result is NULL"); > > } > > } > > } > > > > ----- SNAP ----- > > > > I expected "Result: Hello World" but I always get "Result is NULL". > > Zend_Soap_Client has no problems consuming the service. > > > > It looks like an java problem, but we also tested the same soap server > > using a Microsoft Dynamics AX soap client and got the same result. Okay > we > > do not get "NULL" as return value from service, the Microsoft soap > client > > shows "1" as result. > > > > So I am searching for a solution how to get it working. I am absolutly > > clueless why I do not get the correct result. Is there someone who can > > verify or solve my problem? :-) > > > > If there are any questions or if there are more information needed, > please > > ask! If needed I can upload my sources. > > > > -- Jan > > -- > Benjamin Eberlei > http://www.beberlei.de -- Sensationsangebot nur bis 30.11: GMX FreeDSL - Telefonanschluss + DSL für nur 16,37 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K11308T4569a
