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

Reply via email to