Foros del Web » Programando para Internet » PHP »

Webservice devuelve array

Estas en el tema de Webservice devuelve array en el foro de PHP en Foros del Web. Hola a todos.. Estoy creando una practica para la universidad y la última cosa que me falta es un web service. He seguido muchos tutoriales ...
  #1 (permalink)  
Antiguo 07/06/2016, 14:01
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 15 años, 3 meses
Puntos: 10
Webservice devuelve array

Hola a todos..
Estoy creando una practica para la universidad y la última cosa que me falta es un web service.
He seguido muchos tutoriales y no hay forma de que me funcione.
Estoy ahora mismo con algo muy simple para ver si consigo encontrar el error pero nada...

Elcliente es este:
Código PHP:
<?php
require_once("lib/nusoap.php");

$cliente = new nusoap_client("http://localhost:8888/tiendaugr/php/webserver.php");

$frase $cliente->call("diHola");

echo 
"<h2>Hola</h2>";
echo 
"<p>".$frase ."</p>";


?>
Y este el webserver:
Código PHP:
<?php

require_once("lib/nusoap.php");

function 
diHola(){
    
$frase "Hola!";
    return 
$frase;
}


if ( !isset( 
$HTTP_RAW_POST_DATA ) ){
    
$HTTP_RAW_POST_DATA file_get_contents('php://inputs');
}

//$server = new soap_server();
$server = new nusoap_server();
$server->register("diHola");

$server->service($HTTP_RAW_POST_DATA);
?>
Bueno... pues algo tan sencillo como esto y no consigo que me lance en condiciones la frase....

La salida es esta:
Cita:
Hola

Array
Ya he probado mil cosas y nada....
Alguien podría decirme porque falla?

Saludos.
__________________
Tecnología y tutoriales
  #2 (permalink)  
Antiguo 07/06/2016, 14:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Webservice devuelve array

Imprimir un array literalmente muestra Array, ese no es ningún error.

Si no sabes cómo trabajar con arrays deberías consultar el manual: http://www.php.net/manual/es/language.types.array.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/06/2016, 14:49
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 15 años, 3 meses
Puntos: 10
Respuesta: Webservice devuelve array

Si si. Si sé trabajar con arrays... El caso es que no debería devolver un array... deberia devolver un string o eso creo yo...
Haciendo un var_dump del array me sale esto:

Código PHP:
array(4) {
  [
"faultcode"]=>
  
string(15"SOAP-ENV:Client"
  
["faultactor"]=>
  
string(0""
  
["faultstring"]=>
  
string(50"error in msg parsing:
xml was empty, didn't parse!"
  
["detail"]=>
  
string(0""

Que si no me equivoco dice que esta vacío ...
¿Porque?
__________________
Tecnología y tutoriales
  #4 (permalink)  
Antiguo 07/06/2016, 16:17
 
Fecha de Ingreso: marzo-2016
Ubicación: México
Mensajes: 58
Antigüedad: 8 años, 7 meses
Puntos: 3
Respuesta: Webservice devuelve array

Necesitas que el webservice sea SOAP, o puedes hacer un servicio REST
  #5 (permalink)  
Antiguo 07/06/2016, 16:26
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 14 años, 3 meses
Puntos: 9
Respuesta: Webservice devuelve array

y esto te sirve si lo pones debajo del new nusoap server?

Código PHP:
Ver original
  1. $server->configureWSDL('Mi Web Service #1', 'urn:mi_ws1');
  #6 (permalink)  
Antiguo 07/06/2016, 16:28
 
Fecha de Ingreso: marzo-2016
Ubicación: México
Mensajes: 58
Antigüedad: 8 años, 7 meses
Puntos: 3
Respuesta: Webservice devuelve array

Un problema que veo es que si estas trabajando con SOAP tienes que generar el WSDL y no veo que lo estes generando en el server, otra cosa es que cuando estes registrando el metodo tienes que decir que tipo de respuesta va retornar (Int,String)
  #7 (permalink)  
Antiguo 07/06/2016, 20:39
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 15 años, 3 meses
Puntos: 10
Respuesta: Webservice devuelve array

Cita:
Iniciado por DDecko Ver Mensaje
Un problema que veo es que si estas trabajando con SOAP tienes que generar el WSDL y no veo que lo estes generando en el server, otra cosa es que cuando estes registrando el metodo tienes que decir que tipo de respuesta va retornar (Int,String)
Ahm... supongo que sera eso, aunque lo hice siguiendo tal cual los pasos de un tutorial y al del tutorial le funcionaba tal cual, sin parametros... El tutorial no era de esos malos, sino de un curso entero de una empresa que vive de eso.

Cita:
$server->configureWSDL('Mi Web Service #1', 'urn:mi_ws1');
__SDP__ con esto el resultado es exactamente el mismo. ¿Alguna otra opcion?

Saludos y gracias
__________________
Tecnología y tutoriales
  #8 (permalink)  
Antiguo 08/06/2016, 12:56
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 9 meses
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

Etiquetas: devuelve, webservice
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 13:06.