I think the problem I have got here is that Perl is really flexible when it comes to making objects.
The WSDL is generated by hand, not automated. This leaves a simple question...what services on the web allow public access to methods that return a complex object? Any ideas anyone? Cheers, Tom On Mon, 14 Aug 2006 16:27:54 -0400, you wrote: >Yeah, sorry, this is more of a Perl SOAP WSDL generation issue than a >Flash issue I think. I don't do the WSDL creation in .NET here, I have >a .NET C# developer I work with. Nobody here knows Perl SOPA WSDL >creation in my group. I do know that using native complex objects are >fine with Flash and .NET produced WSDLs, and they semi-problematic in >ColdFusion (according to some recent posts on this list - they >recommended sticking with the straight XML response instead), but I know >nothing of Perl-based WSDL SOAP requests. I only know the basics of a >SOAP WSDL format, so I couldn't begin to debug yours... sorry. Have you >compared your SOAP response to working ones on the Web? > >Best of luck to you, > >Jason Merrill >Bank of America >Learning & Organization Effectiveness - Technology Solutions > > > > > > >>>-----Original Message----- >>>From: [EMAIL PROTECTED] [mailto:flashcoders- >>>[EMAIL PROTECTED] On Behalf Of Tom Shaw >>>Sent: Monday, August 14, 2006 3:28 PM >>>To: [email protected] >>>Subject: Re: [Flashcoders] Flash 8 - Decoding a SOAP Response - Array >of complex >>>objects >>> >>>Hi Jason, >>> >>>Im using Perl with Apach2-SOAP under mod_perl. >>> >>>If you are sending objects back and forth then I dont see why I should >>>be having problems. It must be a problem with my WSDL or Perl SOAP >>>Response. >>> >>>Since flash decodes the response according to the WSDL file then it >>>seems likely there is a problem with this bit. >>> >>>I have included the WSDL file and a copy of the request and response. >>>Does the response look vastly different for an array of objects that >>>you might expect to see on your working Flash/SOAP project? >>> >>>This is an example and triggers my problem and is as short as I could >>>make it. >>> >>>----- snip 8< ------ >>> >>>Request >>><?xml version="1.0" encoding="utf-8"?> >>><SOAP-ENV:Envelope >>>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xmlns:xsd="http://www.w3.org/2001/XMLSchema" >>> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> >>> <SOAP-ENV:Body xmlns:ns1="http://ice.zerofiveone.com/Objecttest"> >>> <ns1:getPeople >>> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> >>> <author xsi:type="xsd:int"></author> >>> </ns1:getPeople> >>> </SOAP-ENV:Body> >>></SOAP-ENV:Envelope> >>> >>>Response >>><?xml version="1.0" encoding="UTF-8"?> >>><SOAP-ENV:Envelope >>> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" >>> xmlns:namesp2="http://xml.apache.org/xml-soap" >>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" >>> xmlns:xsd="http://www.w3.org/2001/XMLSchema" >>> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> >>> <SOAP-ENV:Body> >>> <namesp6:getPeopleResponse >>> xmlns:namesp6="http://ice.zerofiveone.com/Objecttest"> >>> <SOAP-ENC:Array xsi:type="SOAP-ENC:Array" >>> SOAP-ENC:arrayType="namesp2:SOAPStruct[3]"> >>> <item xsi:type="namesp2:SOAPStruct"> >>> <name xsi:type="xsd:string">Tom</name> >>> <age xsi:type="xsd:int">24</age> >>> </item> >>> <item xsi:type="namesp2:SOAPStruct"> >>> <name xsi:type="xsd:string">Chris</name> >>> <age xsi:type="xsd:int">26</age> >>> </item> >>> <item xsi:type="namesp2:SOAPStruct"> >>> <name xsi:type="xsd:string">Andrew</name> >>> <age xsi:type="xsd:int">56</age> >>> </item> >>> </SOAP-ENC:Array> >>> </namesp6:getPeopleResponse> >>> </SOAP-ENV:Body> >>></SOAP-ENV:Envelope> >>> >>>And finally the WSDL - I tried to keep this as short as possible for >>>this example. >>> >>><?xml version="1.0"?> >>><definitions >>>xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" >>> xmlns:xsd="http://www.w3.org/2001/XMLSchema" >>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" >>> xmlns:si="http://soapinterop.org/xsd" >>> xmlns:tns="http://ice.zerofiveone.com/Objecttest" >>> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" >>> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" >>> xmlns="http://schemas.xmlsoap.org/wsdl/" >>> targetNamespace="http://ice.zerofiveone.com/Objecttest"> >>> <types> >>> <xsd:schema >>> targetNamespace="http://ice.zerofiveone.com/Objecttest"> >>> <xsd:import >>> namespace="http://schemas.xmlsoap.org/soap/encoding/" /> >>> <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" /> >>> <xsd:complexType name="Person"> >>> <xsd:all> >>> <xsd:element name="name" type="xsd:string" /> >>> <xsd:element name="age" type="xsd:string" /> >>> </xsd:all> >>> </xsd:complexType> >>> <xsd:complexType name="PersonArray"> >>> <xsd:complexContent> >>> <xsd:restriction base="SOAP-ENC:Array"> >>> <xsd:attribute ref="SOAP-ENC:arrayType" >>> wsdl:arrayType="tns:Person[]" /> >>> </xsd:restriction> >>> </xsd:complexContent> >>> </xsd:complexType> >>> </xsd:schema> >>> </types> >>> >>> <message name="getPeopleRequest"> >>> <part name="author" type="xsd:int" /> >>> </message> >>> <message name="getPeopleResponse"> >>> <part name="return" type="tns:PersonArray" /> >>> </message> >>> >>> <portType name="ObjecttestPortType"> >>> <operation name="getPeople"> >>> <input message="tns:getPeopleRequest" /> >>> <output message="tns:getPeopleResponse" /> >>> </operation> >>> >>> </portType> >>> <binding name="ObjecttestBinding" type="tns:ObjecttestPortType"> >>> <soap:binding style="rpc" >>> transport="http://schemas.xmlsoap.org/soap/http" /> >>> <operation name="getPeople"> >>> <soap:operation >>> soapAction="http://ice.zerofiveone.com/Objecttest/getPeople" >>> style="rpc" /> >>> <input> >>> <soap:body use="encoded" >>> namespace="http://ice.zerofiveone.com/Objecttest" >>> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> >>> </input> >>> <output> >>> <soap:body use="encoded" >>> namespace="http://ice.zerofiveone.com/Objecttest" >>> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> >>> </output> >>> </operation> >>> </binding> >>> <service name="Objecttest"> >>> <port name="ObjecttestPort" binding="tns:ObjecttestBinding"> >>> <soap:address >>> location="http://ice.zerofiveone.com/Objecttest/soap" /> >>> </port> >>> </service> >>></definitions> >>> >>> >>>Id really apprecaite any help with this one. Im completely suck :) >>> >>>Cheers, >>>Tom >>> >>>On Mon Aug 14 10:45:06 2006, in you wrote: >>> >>>>What are you using on your backend? .NET? ColdFusion? If .NET, >yes, >>>>you can easily send objects back and forth. It serializes as SOAP >>>>formatted XML inbetween, but you'll never notice. You can read an >object >>>>with arrays, set properties, and send it back. I can't send you our >>>>SOAP message because it might be considered propriety bank >information >>>>(even though it's not really), but there are some tutorials on the >web> >>>> >>>>http://www.sephiroth.it/tutorials/flashPHP/webServiceConnector/ >>>> >>>>Here is the WSDL is uses: >>>> >>>>http://www.xmethods.net/sd/2001/BabelFishService.wsdl >>>> >>>>Here is some code I use to test loading in an object from a wsdl SOAP >>>>object from .NET >>>> >>>>import mx.services.*; >>>> >>>>function startmyws():Void{ >>>> ws = new WebService("http://blahblahurl/theService.asmx?WSDL"); >>>> ws.onLoad = trace("The webservice loaded fine."); >>>> methodResultObj = ws.GetProject(0); >>>> methodResultObj.onResult = showResult; >>>> methodResultObj.onFault = function(fault) { >>>> trace("!! Flash Web Services Component Error. \n Fault Code: >>>>"+fault.faultcode + ", Fault: " + fault.faultstring); >>>> } >>>>} >>>> >>>>function showResult(projObj:Object){ >>>> //test object value: >>>> theVar = projObj.Content.Topics[0].TextAreas[0].Content >>>> trace(theVar) >>>>} >>>> >>>>startmyws(); >>>> >>>>Don't bother with parsing through XML if you are using .NET. And >wash >>>>those socks. :) >>>> >>>>Jason Merrill >>>>Bank of America >>>>Learning & Organization Effectiveness - Technology Solutions >>>> >>>> >>>> >>>> >>>> >>>> >>>>>>-----Original Message----- >>>>>>From: [EMAIL PROTECTED] >[mailto:flashcoders- >>>>>>[EMAIL PROTECTED] On Behalf Of Tom Shaw >>>>>>Sent: Monday, August 14, 2006 9:29 AM >>>>>>To: [email protected] >>>>>>Subject: [Flashcoders] Flash 8 - Decoding a SOAP Response - Array >of >>>>complex >>>>>>objects >>>>>> >>>>>>Hi all, This is my first post on the list so Ill say hi now and >hope >>>>>>you are all friendly :) >>>>>> >>>>>>Ive been going round for days on this one and have searched high >and >>>>>>low for an answer. I even looked under the bed but all I found was >>>>>>smelly socks, so before I actually go mad could anyone shed some >light >>>>>>on this rather annoying problem with Flash 8 Pro. >>>>>> >>>>>>I have a SOAP server set up under mod_perl which delivers an array >of >>>>>>objects. >>>>>> >>>>>>To avoid reinventing the wheel I wanted Flash to decode the SOAP >>>>>>response from the server. the result Im actually getting is an >array >>>>>>of XML Objects. >>>>>> >>>>>>I could parse these XML objects but then I might as well and decode >>>>>>the entire response manually anyway. the overhead for getting >flash >>>>>>to decode the object has already been incurred so Id really like to >>>>>>figure this out. >>>>>> >>>>>>Now while this might seem trivial I do want to return some rather >more >>>>>>complex objects so this has effetively stopped my development for >now. >>>>>> >>>>>>I dont want to go down the path with flash Remoting at the minute >but >>>>>>for those who might suggest it I have considered it and may >implement >>>>>>it in the future. >>>>>> >>>>>>If anyone is getting Flash to fully decode Arrays of Objects or any >>>>>>other remotely complex data structure could they please post their >>>>>>SOAP response and reply for me to study so I can try and find out >what >>>>>>exactly is wrong. >>>>>> >>>>>>I have a few more questions to ask but for clarity Ill leave these >for >>>>>>another day. >>>>>> >>>>>>Im not sure if posting my SOAP reply would help at this point...I >will >>>>>>create a simple example and post it shortly. >>>>>> >>>>>>Id really appreciate some help here so Ill cross my fingers and >hope >>>>>>for the best. >>>>>> >>>>>>Cheers, >>>>>>Tom >>>>>>_______________________________________________ >>>>>>[email protected] >>>>>>To change your subscription options or search the archive: >>>>>>http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >>>>>> >>>>>>Brought to you by Fig Leaf Software >>>>>>Premier Authorized Adobe Consulting and Training >>>>>>http://www.figleaf.com >>>>>>http://training.figleaf.com >>>_______________________________________________ >>>[email protected] >>>To change your subscription options or search the archive: >>>http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >>> >>>Brought to you by Fig Leaf Software >>>Premier Authorized Adobe Consulting and Training >>>http://www.figleaf.com >>>http://training.figleaf.com >_______________________________________________ >[email protected] >To change your subscription options or search the archive: >http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > >Brought to you by Fig Leaf Software >Premier Authorized Adobe Consulting and Training >http://www.figleaf.com >http://training.figleaf.com _______________________________________________ [email protected] To change your subscription options or search the archive: http://chattyfig.figleaf.com/mailman/listinfo/flashcoders Brought to you by Fig Leaf Software Premier Authorized Adobe Consulting and Training http://www.figleaf.com http://training.figleaf.com

