Hi. I'm using axis-c-1.6B to build a web service. The client side send the next soap message:
POST /axis/Calcot HTTP/1.1 Host: areyes:80 Content-Type: text/xml; charset=UTF-8 SOAPAction: "Calcot#contorno" Content-Length: 1414 <?xml version='1.0' encoding='utf-8' ?> <SOAP-ENV:Envelope 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"> <SOAP-ENV:Body> <ns1:contorno xmlns:ns1="http://areyes/axis/Calcot"> <ParamArm xsi:type="ns2:ParamArm" xmlns:ns2="http://areyes/axis/Calcot/xsd"> <Caja xsi:type="ns2:Caja"> <aro xsi:type="xsd:float">40</aro> <vertical xsi:type="xsd:float">40</vertical> <diagonal xsi:type="xsd:float">40</diagonal> </Caja> <ns2:forLadoArray xmlns:ns2="" xmlns:enc="http://www.w3.org/2001/06/soap-encoding" xmlns:ns2="http://areyes/axis/Calcot/xsd" enc:arrayType="ns2:forLado[2]"> <ParamForma> <lado xsi:type="xsd:byte">68</lado> <codigob xsi:type="xsd:string">2105001131</codigob> <dpMono xsi:type="xsd:float">31</dpMono> <difDP xsi:type="xsd:float">1</difDP> <Potencia xsi:type="ns2:Potencia"> <esf xsi:type="xsd:float">0</esf> <eje xsi:type="xsd:int">15</eje> </Potencia> </ParamForma> <ParamForma> <lado xsi:type="xsd:byte">73</lado> <codigob xsi:type="xsd:string">2105001164</codigob> <dpMono xsi:type="xsd:float">31</dpMono> <difDP xsi:type="xsd:float">1</difDP> <Potencia xsi:type="ns2:Potencia"> <esf xsi:type="xsd:float">0</esf> <eje xsi:type="xsd:int">165</eje> </Potencia> </ParamForma> </ns2:forLadoArray> <puente xsi:type="xsd:float">15</puente> </ParamArm> </ns1:contorno> </SOAP-ENV:Body> </SOAP-ENV:Envelope> in order to deserialize the message the server execute this function: int Axis_DeSerialize_ParamArm(ParamArm* param, IWrapperSoapDeSerializer* pIWSDZ) { param->mman = (Caja*)pIWSDZ->getCmplxObject((void*)Axis_DeSerialize_Caja, (void*)Axis_Create_Caja,(void*)Axis_Delete_Caja, "mman", Axis_URI_Type); ParamForma_Array * array0 = new ParamForma_Array(); array0 = (ParamForma_Array *) pIWSDZ->getCmplxArray(array0, (void*)Axis_DeSerialize_ParamForma, (void*)Axis_Create_ParamForma, (void*)Axis_Delete_ParamForma, (void*)Axis_GetSize_ParamForma, "forLado",Axis_URI_Type); param->forLado = array0; int size ParamForma** tmp = param->forLado->get(size); xsd__float* p_puente = (pIWSDZ->getElementAsFloat("puente",0)); if(p_puente) param->puente = *p_puente; delete p_puente; return pIWSDZ->getStatus(); } the function getCmplxObject() is ok, but the function param->forLado->get(size), in the size parameter return 0, the functions: (void*)Axis_DeSerialize_ParamForma, (void*)Axis_Create_ParamForma, (void*)Axis_Delete_ParamForma, are not executed. the function getCmplxArray is not deserializing the forLadoArray. the server stop with segmentation fault, executing the function getElementAsFloat("puente",0)); What is wrong in the getCmplxArray() function?, Arguments?, or What is wrong in the soap message? any help is welcome. Atanacio Reyes. __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
