Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Tratamiento de ComplexType en WSDL con SOAP Nativa de PHP

Estas en el tema de Tratamiento de ComplexType en WSDL con SOAP Nativa de PHP en el foro de PHP en Foros del Web. Hola: Voy creando un Web Service, el nusoap no me funciona en windows o posteriores a php 5.3, por lo que trabajo con SOAP nativa ...
  #1 (permalink)  
Antiguo 24/11/2014, 10:48
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Tratamiento de ComplexType en WSDL con SOAP Nativa de PHP

Hola:

Voy creando un Web Service, el nusoap no me funciona en windows o posteriores a php 5.3, por lo que trabajo con SOAP nativa de php, el caso es que el servicio está creado y me devuelven datos pero lo que necesito es que me devuelva un array de datos para recibirlos en el cliente y guardarlo en otra BD,

Mi servicio Web
Código PHP:
Ver original
  1. function pagos($fecha){
  2.     require_once "include/conexion.php";
  3.     $result = sqlsrv_query2("
  4. consulta");
  5.     $datos = array();
  6.     $c=0;
  7.     while($row = sqlsrv_fetch_array($result)){
  8.         for($i = 0; $i<6;$i++){
  9.             $datos[$c][$i]=$row[$i];
  10.         }
  11.         $c++;
  12.     }
  13.     return $datos; //devuelvo un array multidimensional de 6 columnas
  14. }
  15.  
  16. $server->AddFunction("pagos");
  17. $server->handle();
Mi WSDL es como sigue:
Código XML:
Ver original
  1. <?xml version="1.0"?>
  2. <definitions name="AritmeticaServicio"
  3.    targetNamespace="urn:Aritmetica"
  4.     xmlns:tns="urn:Aritmetica"
  5.     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  6.     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  7.     xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  8.     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  9.     xmlns="http://schemas.xmlsoap.org/wsdl/">
  10.  
  11.     <wsdl:types>
  12.     <xsd:schema targetNamespace="urn:Aritmetica">
  13.       <xsd:complexType name="resultArray">
  14.         <complexContent>
  15.           <restriction base="SOAP-ENC:Array">
  16.             <attribute ref="SOAP-ENC:arrayType"
  17.                       wsdl:arrayType="xsd:string[][]"/>
  18.           </restriction>
  19.         </complexContent>
  20.       </xsd:complexType>
  21.     </xsd:schema>
  22.     </wsdl:types>
  23.  
  24.     <message name="AritmeticaPeticion">
  25.     <part name="operando1" type="xsd:string" />
  26.   </message>
  27.  
  28.   <message name="AritmeticaRespuesta">
  29.     <part name="respuesta" type="xsd:resultArray" />
  30.   </message>
  31.  
  32.   <portType name="AritmeticaPort">
  33.     <operation name="pagos">
  34.       <input message="tns:AritmeticaPeticion" />
  35.       <output message="tns:AritmeticaRespuesta" />
  36.     </operation>
  37.   </portType>
  38.  
  39.   <binding name="AritmeticaBinding" type="tns:AritmeticaPort">
  40.     <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
  41.     <operation name="pagos">
  42.         <soap:operation soapAction="urn:Aritmetica#pagos" />
  43.         <input>
  44.           <soap:body use="encoded" namespace="urn:Aritmetica"
  45.                     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
  46.         </input>
  47.         <output>
  48.           <soap:body use="encoded" namespace="urn:Aritmetica"
  49.                     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
  50.         </output>
  51.     </operation>
  52.   </binding>  
  53.     <service name="AritmeticaServicio">
  54.       <port name="AritmeticaPort" binding="tns:AritmeticaBinding">
  55.         <soap:address location="http://localhost:8080/proyecto/server.php" />
  56.       </port>
  57.     </service>    
  58. </definitions>
Bajo mi percepcion <AritmeticaRespuesta> deberìa devolver el array que necesito, pero cuando en el lado del cliente lo imprimo
Código PHP:
Ver original
  1. try{
  2.  $clienteSOAP = new SoapClient('http://localhost:8080/proyecto/aritmetica.wsdl');
  3.  $resultado_pago = $clienteSOAP->pagos('2014-06-30');
  4.   echo '<pre>';
  5.  var_dump($resultado_pago);
  6.  
  7. } catch(SoapFault $e){
  8. echo '<pre>';
  9.  print_r($e);
  10. }
Como ven si ingresa por try{} pero me està devolviendo un objeto sin dato alguno.

Por favor quisiera por lo menos me den una idea de cual mi problema. Gracias.
  #2 (permalink)  
Antiguo 24/11/2014, 17:19
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Tratamiento de ComplexType en WSDL con SOAP Nativa de PHP

Bueno al parecer no era una problema del WSDL, el error esta en el servidor en el momento de traer los datos, es otro tema por lo que doy por cerrado esta.

Etiquetas: fecha, soap, sql, tratamiento, wsdl
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 10:25.