Ver Mensaje Individual
  #8 (permalink)  
Antiguo 08/06/2016, 12:56
abrahamhs
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 16 años, 1 mes
Puntos: 11
Respuesta: Webservice devuelve array

Aunque nunca he usado nusoap, veo siempre que todo el mundo que lo usa tiene problemas por eso uso lo siguiente:
Código PHP:
Ver original
  1. <?php
  2. ini_set('soap.wsdl_cache_enabled',0);   // Deshabilitar cache en php
  3. $PhpWsdlAutoRun=true;                   // With this global variable PhpWsdl will autorun in quick mode, too
  4. //Este paquete fue descargado de https://code.google.com/archive/p/php-wsdl-creator/downloads         archivo=php-wsdl-2.3.zip
  5. require_once ('php-wsdl-2.3/class.phpwsdl.php');//Clase modificada segun https://github.com/jk/php-wsdl-creator/blob/master/class.phpwsdl.php
  6. //Ver el demo 4 de este paquete
  7. class ServidorSOAP{
  8.     private $empleados;
  9.     function __construct(){
  10.         //Los comentarios en forma de javadoc son importantes, ya que de ahi se crea la documentación del WebService y sin esto el framework no funciona
  11.         //Los param en los COMENTARIOS determinan los parametros de las funciones en el wsdl y los return de los comentarios las respuestas de las funciones
  12.         require_once('Empleado.php');
  13.         $this->empleados=new ArrayObject();
  14.         inicializar($this->empleados);
  15.     }
  16.     /**
  17.      * saludar
  18.      * @param void
  19.      * @return string Response
  20.      */
  21.     public function saludar(){
  22.         return "Hola SOAP PHP";
  23.     }
  24.     /**
  25.      * imprimir
  26.      * @param string $mensaje
  27.      * @return string Response
  28.      */
  29.     public function imprimir($mensaje){
  30.         return "Hola ".$mensaje;
  31.     }
  32. }
  33. ?>
y para el cliente puede ser así:
Código PHP:
Ver original
  1. $WebService= new SoapClient("http://factulaar.grupolaar.com:9019/ClsWaybill.svc?wsdl",
  2.                     array('trace' => 1,'soap_version' => SOAP_1_1));
  3. $arreglo=array('parametro1'=>$parametro1,'parametro2'=>$parametro2, ...);//PuedenSerVarios
  4. $respuesta = $WebService->__soapCall('CreateWayBill',array($arreglo));
ó así:
Código PHP:
Ver original
  1. $WebService= new SoapClient("http://factulaar.grupolaar.com:9019/ClsWaybill.svc?wsdl",
  2.                     array('trace' => 1,'soap_version' => SOAP_1_1));    
  3. $wayBill=new WayBill();
  4. $wayBill->ActualWeight=$valor1;
  5. $wayBill->Branch=$valor2;
  6. //etc. Así con el resto de los campos
  7. $arreglo=array('objWayBillDetails'=>$wayBill);
  8. $respuesta = $WebService->__soapCall('CreateWayBill',array($arreglo));
Depende de como sea tu Server
Revisa esto: aqui