Hi, I've created a service based on a WSDL (generated sources with "WSDL2C -ss -sd -d adb -u -f -uri") and it seems to work fine for parameters and return values with fixed type.
Some of my functions can take any parameters, e.g. from my WSDL: ... <wsdl:types> ... <s:element name="SetSymbol"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="pName" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="pData" /> </s:sequence> </s:complexType> </s:element> <s:element name="SetSymbolResponse"> <s:complexType /> </s:element> ... </wsdl:types> ... <wsdl:message name="SetSymbolSoapIn"> <wsdl:part name="parameters" element="tns:SetSymbol" /> </wsdl:message> <wsdl:message name="SetSymbolSoapOut"> <wsdl:part name="parameters" element="tns:SetSymbolResponse" /> </wsdl:message> ... <wsdl:portType name="StatConnectorSoap"> ... <wsdl:operation name="SetSymbol"> <wsdl:input message="tns:SetSymbolSoapIn" /> <wsdl:output message="tns:SetSymbolSoapOut" /> </wsdl:operation> ... </wsdl:portType> ... <wsdl:binding name="StatConnectorSoap" type="tns:StatConnectorSoap"> ... <wsdl:operation name="SetSymbol"> <soap:operation soapAction="http://www.statconn.com/StatConnector/SetSymbol" style="document" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> ... </wsdl:binding> <wsdl:binding name="StatConnectorSoap12" type="tns:StatConnectorSoap"> ... <wsdl:operation name="SetSymbol"> <soap12:operation soapAction="http://www.statconn.com/StatConnector/SetSymbol" style="document" /> <wsdl:input> <soap12:body use="literal" /> </wsdl:input> <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation> ... </wsdl:binding> ... The generated function signature is adb_SetSymbolResponse_t* axis2_skel_StatConnector_SetSymbol(const axutil_env_t *env,adb_SetSymbol_t* _setSymbol ); and adb_SetSymbol.h contains the following accessor functions: axis2_char_t* AXIS2_CALL adb_SetSymbol_get_pName( adb_SetSymbol_t* _SetSymbol, const axutil_env_t *env); axiom_node_t* AXIS2_CALL adb_SetSymbol_get_pData( adb_SetSymbol_t* _SetSymbol, const axutil_env_t *env); The SOAP payload from the request message sent from my test application (done in C#) is: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <SetSymbol xmlns="http://www.statconn.com/StatConnector"> <pName>myvar</pName> <pData xsi:type="ArrayOfAnyType"> <anyType xsi:type="xsd:double">3.14</anyType> <anyType xsi:type="xsd:int">815</anyType> <anyType xsi:type="xsd:string">My String</anyType> </pData> </SetSymbol> </soap:Body> </soap:Envelope> When now calling adb_SetSymbol_get_pData(), I expected to get access to all elements of pData. So I wrote a simple recursive tracing functions showing the data I got: int iterateNodes(axiom_node_t* pNode,axutil_env_t const* pEnv,int pLevel) { axiom_node_t* lNode; printf("MyFun#%d: node <%s> is of type %d\n",pLevel, axiom_node_to_string(pNode,pEnv), axiom_node_get_node_type(pNode,pEnv)); lNode = axiom_node_get_first_child(pNode,pEnv); if(lNode) { iterateNodes(lNode,pEnv,pLevel+1); } lNode = axiom_node_get_next_sibling(pNode,pEnv); if(lNode) { iterateNodes(lNode,pEnv,pLevel); } return 0; } And this function gets called from axis2_skel_StatConnector_SetSymbol() like this: iterateNodes(adb_SetSymbol_get_pData(_setSymbol,env),env,0); Unexpectedly the stdout shows: MyFun#0: node <<anyType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:double">3.14</anyType>> is of type 2 MyFun#1: node <3.14> is of type 8 axiom_node_get_next_sibling for adb_SetSymbol_get_pData(_setSymbol,env) returns NULL. I'm quite sure this is a misunderstanding in the way I'm using the adb-functions, but I just can't find the problem. Additionally, if sending not an array, but just a simple scalar: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <SetSymbol xmlns="http://www.statconn.com/StatConnector"> <pName>myvar</pName> <pData xsi:type="xsd:double">3.1415</pData> </SetSymbol> </soap:Body> </soap:Envelope> the traces show MyFun#0: node <3.1415> is of type 8 Is there any way to find out the type informatino (xsd:double in this case) from adb_SetSymbol_get_pData()? Best, Thomas