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: flashcoders@chattyfig.figleaf.com
>>>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
>>>_______________________________________________
>>>Flashcoders@chattyfig.figleaf.com
>>>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
_______________________________________________
Flashcoders@chattyfig.figleaf.com
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

Reply via email to