Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/01/2011, 04:16
MangaPower
 
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Nusoap: Problema enviando parámetros complextype anidados

Hola, primero deciros que este es mi primer post pero no mi primer visita, quiero felicitar a los web master de estos foros, los post aquí publicados han sido de gran ayuda para mis proyectos.

Bueno, al tema. Resulta que tengo este Webservice (he acortado el texto dejando solo las líneas que importantes para lo que pretendo hacer):

Código:
<wsdl:definitions targetNamespace="http://services.system.cex">
<wsdl:types>
−
<schema targetNamespace="http://services.system.cex">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
−
<complexType name="ArrayOf_xsd_string">
−
<complexContent>
−
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
</restriction>
</complexContent>
</complexType>
−
<complexType name="DatosExpediente">
−
<sequence>
<element name="cobd" nillable="true" type="xsd:string"/>
<element name="cobe" nillable="true" type="xsd:string"/>
<element name="ocup" nillable="true" type="xsd:string"/>
<element name="ocupMultiple" nillable="true" type="impl:ArrayOf_xsd_string"/>
<element name="ocur" nillable="true" type="xsd:string"/>
<element name="valor" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
−
<complexType name="ArrayOfDatosExpediente">
−
<complexContent>
−
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="impl:DatosExpediente[]"/>
</restriction>
</complexContent>
</complexType>
−
<complexType name="TareasExpediente">
−
<sequence>
<element name="tareaFin" nillable="true" type="xsd:string"/>
<element name="tareaInicio" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
−
<complexType name="Expediente">
−
<sequence>
<element name="cobe" nillable="true" type="xsd:string"/>
<element name="datosExpediente" nillable="true" type="impl:ArrayOfDatosExpediente"/>
<element name="lista" nillable="true" type="xsd:string"/>
<element name="modelo" nillable="true" type="xsd:string"/>
<element name="rol" nillable="true" type="xsd:string"/>
<element name="sistema" nillable="true" type="xsd:string"/>
<element name="tareas" nillable="true" type="impl:TareasExpediente"/>
<element name="usuario" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
−

...

<wsdl:message name="grabaExpedienteResponse">
<wsdl:part name="grabaExpedienteReturn" type="impl:RespuestaGrabaExpediente"/>
</wsdl:message>
<wsdl:message name="testRequest">

   </wsdl:message>

...

<wsdl:message name="grabaExpedienteRequest">
<wsdl:part name="expediente" type="impl:Expediente"/>
</wsdl:message>
−

...

<wsdl:operation name="grabaExpediente" parameterOrder="expediente">
<wsdl:input message="impl:grabaExpedienteRequest" name="grabaExpedienteRequest"/>
<wsdl:output message="impl:grabaExpedienteResponse" name="grabaExpedienteResponse"/>
</wsdl:operation>
−

...

<wsdl:input name="grabaExpedienteRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://services.system.cex" use="encoded"/>
</wsdl:input>
−
<wsdl:output name="grabaExpedienteResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://services.system.cex" use="encoded"/>
</wsdl:output>
</wsdl:operation>
−
Como se puede ver, el método que pretendo usar se llama grabaExpediente. En principio, tengo puesto esto:

Código:
//Consumir servicio de "grabaExpediente"
		$result = $client->call('grabaExpediente', array('expediente' => array(
			"cobe"				=> 'E0100000',
			"datosExpediente"	=> $datosExpediente,
			"lista"				=> '',
			"modelo"			=> '',
			"rol"				=> '',
			"sistema"			=> '',
			"tareas"			=> array(
				"tareaFin"		=> '',
				"tareaInicio"	=> '',
			),
			"usuario"			=> '',

		)));
donde datosExpedientes es una variable que contiene un array cuyos elementos tienen esta estructura:

Código:
array(
			"cobd"			=> '',
			"cobe"			=> codigoEquivalente($key),
			"ocup"			=> '',
			"ocupMultiple"	        => array(),
			"ocur"			=> '',
			"valor"			=> $value,
		);
La información la guardo desde un formulario, ejecuta el WS pero me salta este error:

Código:
Array
(
    [faultcode] => soapenv:Server.userException
    [faultstring] => java.lang.NullPointerException
    [detail] => Array
        (
            [hostname] => apps1
        )

)
Le he dado muchas vueltas pero no logro dar con alguna solución y ya estoy desesperado. Alguien, por favor, me podría decir que debería hacer o que está mal? Gracias por vuestra atención.