Re: [SOAP] Re: Newbie question

From: Date: Tue, 31 Jan 2006 23:41:11 +0000
Subject: Re: [SOAP] Re: Newbie question
References: 1 2  Groups: php.soap 
Request: Send a blank email to php-soap+get-2103@lists.php.net to get a copy of this message
wellll..., if it ain't broke, don't fix it. I just saw several namespace prefixes being used that weren't defined: wsdl, xsd, impl, etc... I was unable to consume your WSDL using Oracle's JDeveloper, which has a "build a client stub from a WSDL" feature. I have not tried to consume it using PHP. If you're able to consume it, then, well, great! How did you generate it? I ended up manually generating my wsdl in Axis, using the following command: java org.apache.axis.wsdl.Java2WSDL -o <output file> -l <endpoint URL> -n <targetNamespace> -y RPC -u ENCODED -T 1.1 <java web service class> hth, -Peter btw, I found Axis' port monitor to be invaluable. ""Patrick Hanna"" <phanna@email.unc.edu> wrote in message news:200601312328.k0VNSDDW016886@smtp.unc.edu... > I figured out that I had set up the original beanMapping incorrectly and I > fixed it and now it works. But now that you meantion my namespaces problem, > how should I fix it? Do I need to set up schemas for my custom types? > > Thanks, > > Patrick > > -----Original Message----- > From: Peter Guy [mailto:pguy@vrcis.com] > Sent: Tuesday, January 31, 2006 5:55 PM > To: soap@lists.php.net > Subject: [SOAP] Re: Newbie question > > The structure of your WSDL looks alright, although the namespaces are not > setup correctly. > That may be because you cut them out for brevity in your post... > > I think your problem is with Axis, not PHP. > > What's happening is that Axis doesn't know how to turn the "Number" complex > type into a Java object (it's called "deserialization", and it's the bane of > the Web Service author). > > You need to help Axis out a little by including a beanMapping element in > your wsdd file. Something along these lines may work: > <service> > ... > <beanMapping qname="ns:Number" > languageSpecificType="java:samples.stock.StockQuoteService.Number"/> > ... > </service> > > Although you may need to use a typeMapping element, depending on your Java > object. > > Check out http://www.osmoticweb.com/axis-wsdd/ for more wsdd > goodness. > > hth, > > -Peter > > "Patrick Hanna" <phanna@email.unc.edu> wrote in message > news:C0052195.22EF%phanna@email.unc.edu... > > I cannot for the life of me get this to work. I have a service with this > > wsdl: > > > > <wsdl:definitions > > > > targetNamespace="http://192.168.0.2:8080/axis/services/quotes"> > > <!-- > > WSDL created by Apache Axis version: 1.3 > > Built on Oct 05, 2005 (05:23:37 EDT) > > --> > > <wsdl:types> > > <schema > > targetNamespace="http://stock.samples/"> > > <import > > namespace="http://schemas.xmlsoap.org/soap/encoding/"/> > > <complexType name="Number"> > > <sequence> > > <element name="data" type="xsd:float"/> > > </sequence> > > </complexType> > > </schema> > > </wsdl:types> > > <wsdl:message name="testResponse"> > > <wsdl:part name="testReturn" type="tns1:Number"/> > > </wsdl:message> > > <wsdl:message name="testRequest"> > > <wsdl:part name="in0" type="tns1:Number"/> > > </wsdl:message> > > <wsdl:portType name="StockQuoteService"> > > <wsdl:operation name="test" parameterOrder="in0"> > > <wsdl:input message="impl:testRequest" > > name="testRequest"/> > > <wsdl:output message="impl:testResponse" name="testResponse"/> > > </wsdl:operation> > > </wsdl:portType> > > <wsdl:binding name="quotesSoapBinding" type="impl:StockQuoteService"> > > <wsdlsoap:binding style="rpc" > > transport="http://schemas.xmlsoap.org/soap/http"/K»D–/:œÉ呚 > > ,> > > <wsdl:operation name="test"> > > <wsdlsoap:operation soapAction=""/> > > <wsdl:input name="testRequest"> > > <wsdlsoap:body > > > > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > > namespace="http://stock.samples" > > use="encoded"/> > > </wsdl:input> > > <wsdl:output name="testResponse"> > > <wsdlsoap:body > > > > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > > > > namespace="http://192.168.0.2:8080/axis/services/quotes" > > use="encoded"/> > > </wsdl:output> > > </wsdl:operation> > > </wsdl:binding> > > <wsdl:service name="StockQuoteServiceService"> > > <wsdl:port binding="impl:quotesSoapBinding" > > name="quotes"> > > <wsdlsoap:address > > > > location="http://192.168.0.2:8080/axis/services/quotes"/> > > </wsdl:port> > > </wsdl:service> > > </wsdl:definitions> > > > > Basically I have a service with a test() method that takes a complexType > > Number and returns another complexType Number. I've been able to return > > things from the test method and bind them to a Number object or just use > > ->{"data"} to access the result. I cannot pass objects correctly though. > > > > All my attempts at passing objects result in "org.xml.sax.SAXException: No > > object was found for class type class samples.stock.StockQuoteService." > I'm > > not sure what I'm doing wrong or if my wsdl is incorrect. What is the > proper > > way to pass a complex type to an object? I've tried using wsdl2php but I > > received the same error so I assume my wsdl must be incorrect. > > > > Can someone please help? Any pointers will be appreciated. > > > > Pat

« previous php.soap (#2103) next »