I am trying to communicate with a Java webservice implemented using Apache 
Axis.  It has been working fine, until I tried sending an object with an 
array property. When I call the webservice passing the array, I get the 
following error:

org.xml.sax.SAXParseException: Element "xmlns:soapenc"cannot have "xmlns" as 
its prefix.

I checked to make sure it wasn't an array.length = 1 issue... now I'm just 
stumped. On the surface, it looks like Flex is not generating a valid SOAP 
call to the webservice.

Below I have provided the Flex & Java code for a simplified example of the 
problem.  The code has 2 buttons: 'Get Foo' which calls the webservice to 
get a Foo object, and a 'Save Foo', which simply passes that Foo instance 
back to the webservice. It blows up when you click 'Save Foo'.

I also have captured the SOAP traffic between client & server.

Any help would be appreciated.

Thanks in advance,

-Tim.



[Foo.java]

package com.dom.sampling.test;

import java.io.*;
import java.util.*;

public class Foo implements Serializable
{
        private Long id;
        private String name;
        private Set bars;

        public Long getId() { return id; }

        public void setId(Long id) { this.id = id; }

        public String getName() { return name; }

        public void setName(String name) { this.name = name; }

        public Set getBars() { return bars; }

        public void setBars(Set bars) { this.bars = bars; }
}


[Bar.java]

package com.dom.sampling.test;

import java.io.*;

public class Bar implements Serializable
{
        private Long id;
        private String name;

        public Long getId() { return id; }

        public void setId(Long id) { this.id = id; }

        public String getName() { return name; }

        public void setName(String name) { this.name = name; }
}


[FooService.java]

package com.dom.sampling.test;

import java.util.*;
import java.util.*;

public class FooService
{
        public Foo getFoo()
        {
                Bar bar1 = new Bar();
                bar1.setId(new Long(1));
                bar1.setName("bar1");

                Bar bar2 = new Bar();
                bar2.setId(new Long(2));
                bar2.setName("bar2");

                Set barSet = new HashSet();
                barSet.add(bar1);
                barSet.add(bar2);

                Foo foo = new Foo();
                foo.setId(new Long(1));
                foo.setName("foo");
                foo.setBars(barSet);

                return foo;
        }


        public Long saveFoo(Foo foo)
        {
                Set bars = foo.getBars();
                System.out.println("size = " + bars.size());
                return new Long(1);
        }
}


[Foo.as]

class com.dom.sampling.test.Foo
{
        public function Foo()
        {
                _remoteClass = "com.dom.sampling.test.Foo";
        }

        // properties
        public var id : Number;
        public var name : String;
        public var bars : Array = new Array();

        // remoting
        public var _remoteClass : String;
        private static var doRegister : Boolean = 
Object.registerClass("com.dom.sampling.test.Foo", Foo);
}


[Bar.as]

class com.dom.sampling.test.Bar
{
        public function Bar()
        {
                _remoteClass = "com.dom.sampling.test.Bar";
        }

        // properties
        public var id : Number;
        public var name : String;

        // remoting
        public var _remoteClass : String;
        private static var doRegister : Boolean = 
Object.registerClass("com.dom.sampling.test.Bar", Bar);
}


[Test.mxml]

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml";
                xmlns:dom="*">

        <mx:WebService id="service"
                       wsdl="/sampling-ws/services/FooService?wsdl"
                       showBusyCursor="true">

                <mx:operation name="getFoo"
                              result="model = event.result"/>

                <mx:operation name="saveFoo"
                              
result="mx.controls.Alert.show('result='+event.result)"/>
        </mx:WebService>

        <mx:Script>
        <![CDATA[
                var model: com.dom.sampling.test.Foo;
        ]]>
        </mx:Script>

        <mx:Button label="Get Foo" click="service.getFoo()"/>

        <mx:Button label="Save Foo" click="service.saveFoo(model)"/>

</mx:Application>



[getFoo() request]


POST /sampling-ws/services/FooService HTTP/1.1

Accept: */*

x-flash-version: 7,0,19,0

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 
1.1.4322)

Connection: Keep-Alive

Cache-Control: no-cache

Content-Type: text/xml; charset=utf-8

SOAPAction: ""

Host: 127.0.0.1

Cookie: $Version=0; 
JSESSIONID=C8RMvp219rrF8SQPrLFs5bLM0Cv54SxcTXC29PqRZdng1MLwPfBQ!-1472445939

Content-Length: 388



<?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://test.sampling.dom.com";><ns1:getFoo 
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
/></SOAP-ENV:Body></SOAP-ENV:Envelope>


[getFoo() response]


<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
<soapenv:Body>
  <ns1:getFooResponse 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:ns1="http://test.sampling.dom.com";>
   <getFooReturn href="#id0"/>
  </ns1:getFooResponse>
  <multiRef id="id0" soapenc:root="0" 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
xsi:type="ns2:Foo" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:ns2="urn:Dominion">
   <bars href="#id1"/>
   <id href="#id2"/>
   <name xsi:type="soapenc:string">foo</name>
  </multiRef>
  <multiRef id="id1" soapenc:root="0" 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
soapenc:arrayType="xsd:anyType[2]" xsi:type="soapenc:Array" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
   <multiRef href="#id3"/>
   <multiRef href="#id4"/>
  </multiRef>
  <multiRef id="id2" soapenc:root="0" 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
xsi:type="soapenc:long" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>1</multiRef>
  <multiRef id="id3" soapenc:root="0" 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
xsi:type="ns3:Bar" xmlns:ns3="urn:Dominion" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
   <id href="#id5"/>
   <name xsi:type="soapenc:string">bar2</name>
  </multiRef>
  <multiRef id="id4" soapenc:root="0" 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
xsi:type="ns4:Bar" xmlns:ns4="urn:Dominion" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
   <id href="#id6"/>
   <name xsi:type="soapenc:string">bar1</name>
  </multiRef>
  <multiRef id="id6" soapenc:root="0" 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
xsi:type="soapenc:long" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>1</multiRef>
  <multiRef id="id5" soapenc:root="0" 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
xsi:type="soapenc:long" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>2</multiRef>
</soapenv:Body>
</soapenv:Envelope>


[saveFoo() request]

POST /sampling-ws/services/FooService HTTP/1.1

Accept: */*

x-flash-version: 7,0,19,0

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 
1.1.4322)

Connection: Keep-Alive

Cache-Control: no-cache

Content-Type: text/xml; charset=utf-8

SOAPAction: ""

Host: 127.0.0.1

Cookie: $Version=0; 
JSESSIONID=C8RMvp219rrF8SQPrLFs5bLM0Cv54SxcTXC29PqRZdng1MLwPfBQ!-1472445939

Content-Length: 1707



<?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://test.sampling.dom.com";><ns1:saveFoo 
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";><foo 
xsi:type="ns2:Foo" xmlns:ns2="urn:Dominion"><bars 
soapenc:arrayType="xsd:anyType[2]" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xsi:type="soapenc:Array"><item xsi:type="xsd:anyType"><xmlns:soapenc 
xsi:type="xsd:string">http://schemas.xmlsoap.org/soap/encoding/</xmlns:soapenc><xmlns:ns3
 
xsi:type="xsd:string">urn:Dominion</xmlns:ns3><xsi:type 
xsi:type="xsd:string">ns3:Bar</xsi:type><soapenv:encodingStyle 
xsi:type="xsd:string">http://schemas.xmlsoap.org/soap/encoding/</soapenv:encodingStyle><soapenc:root
 
xsi:type="xsd:string">0</soapenc:root><name 
xsi:type="xsd:string">bar2</name><id 
xsi:type="xsd:string">id3</id></item><item 
xsi:type="xsd:anyType"><xmlns:soapenc 
xsi:type="xsd:string">http://schemas.xmlsoap.org/soap/encoding/</xmlns:soapenc><xmlns:ns4
 
xsi:type="xsd:string">urn:Dominion</xmlns:ns4><xsi:type 
xsi:type="xsd:string">ns4:Bar</xsi:type><soapenv:encodingStyle 
xsi:type="xsd:string">http://schemas.xmlsoap.org/soap/encoding/</soapenv:encodingStyle><soapenc:root
 
xsi:type="xsd:string">0</soapenc:root><name 
xsi:type="xsd:string">bar1</name><id 
xsi:type="xsd:string">id4</id></item></bars><id xsi:type="ns3:long" 
xmlns:ns3="http://schemas.xmlsoap.org/soap/encoding/";>1</id><name 
xsi:type="ns4:string" 
xmlns:ns4="http://schemas.xmlsoap.org/soap/encoding/";>foo</name></foo></ns1:saveFoo></SOAP-ENV:Body></SOAP-ENV:Envelope>


[saveFoo() response]


<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
<soapenv:Body>
  <soapenv:Fault>
   <faultcode>soapenv:Server.userException</faultcode>
   <faultstring>org.xml.sax.SAXParseException: Element 
&quot;xmlns:soapenc&quot; cannot have &quot;xmlns&quot; as its 
prefix.</faultstring>
   <detail>
    <ns1:hostname 
xmlns:ns1="http://xml.apache.org/axis/";>L110024794</ns1:hostname>
   </detail>
  </soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>




--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to