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