Hi All I've encountered a problem with the Axis C++ API while testing for compatibility. It can't seem to handle a complexType array's name and type correctly.
My test is a simple interoperability test 'echoStructArray' that sends an
array (inputStructArray) of complexTypes (SOAPStruct) and expects to
receive the same values back. To serialize this I'm using the function
Call::addCmplxArrayParameter(pArray, pSZFunct, pDelFunct, pSizeFunct,
pName, pNamespace) which doesn't contain enough arguments to specify both
the name and complex type - in fact they are both set from the pName (in
SoapSerializer::addOutputCmplxArrayParam() via Param::setName() and
ArrayBean::setTypeName()).
So depending on what you specify pName as Axis C++ ends up sending:
<SOAPStructArray ... enc:arrayType="ns2:SOAPStruct[4]">
or
<inputStructArray ... end:arrayType="ns2:inputStruct[4]">
when I believe it should be sending:
<inputStructArray ... enc:arrayType="ns2:SOAPStruct[4]">
I've encountered servers that check for the element name
'inputStructArray' and others check for the arrayType 'SOAPStruct[x]'. So
no matter which way around you specify pName, it will not work in some
cases.
I believe Call::addCmplxArrayParameter() and the functions hidden beneath
it require an extra argument 'pTypeName' to handle this serialization
correctly. Can anyone confirm this or have I missed something that will
otherwise solve this problem?
(I also noticed that Axis automatically appends "Array" to the element
name even when this isn't required, but that's only a minor inconvenience)
Cheers
Bradley Gorman
interop.wsdl
Description: Binary data
echoStructArrayRequest.xml
Description: Binary data
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
