Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Nusoap: Problema enviando parámetros complextype anidados

Estas en el tema de Nusoap: Problema enviando parámetros complextype anidados en el foro de Frameworks y PHP orientado a objetos en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 28/01/2011, 04:16
 
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 3
Antigüedad: 13 años, 2 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.
  #2 (permalink)  
Antiguo 31/01/2011, 05:04
 
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 3
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Nusoap: Problema enviando parámetros complextype anidados

Ya lo he solucionado, simplemente tenía que rellenar ciertos campos que si son obligatorios (en el wsdl no los especifica, pero luego, internamente en el servidor, son necesarios y si no están presente salta el NullPointerException.

Etiquetas: anidados, nusoap
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:03.