Foros del Web » Programando para Internet » PHP »

Webservice PHP & NuSOAP.

Estas en el tema de Webservice PHP & NuSOAP. en el foro de PHP en Foros del Web. Hola foristas...!! Resulta que empiezo a darle a este tema y he TRATADO por todos los medios hacer funcionar un ejemplo (el mismo fusilado) . ...
  #1 (permalink)  
Antiguo 24/07/2007, 22:00
Avatar de Hollman  
Fecha de Ingreso: enero-2003
Ubicación: Bogotá - Colombia
Mensajes: 202
Antigüedad: 21 años, 3 meses
Puntos: 1
Webservice PHP & NuSOAP.

Hola foristas...!!

Resulta que empiezo a darle a este tema y he TRATADO por todos los medios hacer funcionar un ejemplo (el mismo fusilado). Aparentemente el server (HolaMundo.php) queda funcionando pero con el cliente (ClienteHolaMundo.php) trato de instanciarlo y me saca este error...

Código:
Operation 'HolaMundoRequest' is not defined in the WSDL for this service
Acudo a su sabiduría. Estos son los fuentes

HolaMundo.php
Código:
<?php
require_once('lib/nusoap.php');

function HolaMundo ($nombre)
{
	return "Hola ".$nombre;
}

$server = new soap_server();
$ns="http://localhost/NuSOAP/HolaMundo";
$server->configurewsdl('ApplicationServices',$ns);
$server->wsdl->schematargetnamespace=$ns;
$server->register('HolaMundo',array('nombre' => 'xsd:string'),array('return' => 'xsd:string'),$ns);

if (isset($HTTP_RAW_POST_DATA))
{
	$input = $HTTP_RAW_POST_DATA;
}
else
{
	$input = implode("\r\n", file('php://input'));
}
$server->service($input);
exit;
?>
ClienteHolaMundo.php
Código:
<?php
require_once('lib/nusoap.php');

$oSoap = new soapclient('http://localhost/NuSOAP/HolaMundo.php?wdsl');

$dato = $oSoap->call('HolaMundo',array('nombre' => 'Hollman'),'http://localhost/NuSOAP/HolaMundo');

if ($oSoap->fault === false)
{
	echo "Error al llamar el metodo<br/>".$oSoap->getError();
}
else 
{
	echo print_r($dato);
}
?>
Faltó decir que instale el NuSOAP 0.7.2 , no tengo proxy, php5.1.4 en apache 2.0.59


Éxitos.

Última edición por Hollman; 24/07/2007 a las 23:06
  #2 (permalink)  
Antiguo 25/07/2007, 00:33
Avatar de Hollman  
Fecha de Ingreso: enero-2003
Ubicación: Bogotá - Colombia
Mensajes: 202
Antigüedad: 21 años, 3 meses
Puntos: 1
Re: Webservice PHP & NuSOAP.

Hola nuevamente....

Ya hice funcionar los ejemplos...

acá están los fuentes

HolaMundo.php
Código:
<?php
require_once('lib/nusoap.php');

function HolaMundo ($nombre)
{
	return "Hola ".$nombre;
}

$server = new soap_server();
$ns="http://localhost/NuSOAP/HolaMundo";
$server->configurewsdl('ApplicationServices',$ns);
$server->wsdl->schematargetnamespace=$ns;
$server->register('HolaMundo',array('nombre' => 'xsd:string'),array('return' => 'xsd:string'),$ns);

if (isset($HTTP_RAW_POST_DATA))
{
	$input = $HTTP_RAW_POST_DATA;
}
else
{
	$input = implode("\r\n", file('php://input'));
}
$server->service($input);
exit;
?>

ClienteHolaMundo.php
Código:
<?php
ini_set('soap.wsdl_cache_enabled', '0'); 
require_once('lib/nusoap.php');

$oSoap = new soapclient('http://localhost/NuSOAP/HolaMundo.php?wdsl');

$err = $oSoap->getError();
if ($err)
{
	echo '<p><b>Error: ' . $err . '</b></p>';
}

$dato = $oSoap->call('HolaMundo',array('nombre' => 'Hollman'),'http://localhost/NuSOAP/HolaMundo');

if ($oSoap->fault)
{
	echo "Error al llamar el metodo<br/>".$oSoap->getError();
}
else 
{
	echo $dato;
}
?>


gracias a quienes les invirtieron su tiempo...


Éxitos.

Última edición por Hollman; 25/07/2007 a las 07:32
  #3 (permalink)  
Antiguo 25/07/2007, 02:42
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 1 mes
Puntos: 10
Re: Webservice PHP & NuSOAP.

Hola.

yo también he hecho funcionar el ejemplo, pero no entieno el funcionamiento interno del Web Service.

¿como crearía yo funciones y me devolvería datos?
¿Dónde podría poner llamadas a bases de datos y que me retornara información?

Hacerle funcionar, con los aportes de nuestro compañero hollman ha sido facil, pero no se como modificarlo y hacer que genere otro tipo de información y darle formato a la misma.

Porfavor, ayudarme un poco.
Gracias :adio:
  #4 (permalink)  
Antiguo 25/07/2007, 09:52
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.931
Antigüedad: 21 años, 3 meses
Puntos: 2
Re: Webservice PHP & NuSOAP.

hola maestros yo tambien estoy investigando para hacer algo con webservice, al ejecutar cliente.php me sale la pantalla en blanco(solucione algunos errores que mostraba). ahi puse el codigo como lo uso yo .

¿alguien me orienta en que me equivoco?
saludos,.

nota uso php4(easyphp).


cliente.php
<?php
ini_set('soap.wsdl_cache_enabled', '0');
require_once('nusoap.php');

$oSoap = new soapclient('http://localhost/webservice/prueba2/HolaMundo.php?wdsl');
//$oSoap->setHTTPProxy('10.10.1.2',8080,'cdiaz','cdiaz');
$err = $oSoap->getError();
if ($err)
{
// Display the error
echo '<p><b>Constructor error: ' . $err . '</b></p>';
// At this point, you know the call that follows will fail
}

$dato = $oSoap->call('HolaMundo',array('nombre' => 'Hollman'),'http://localhost/webservice/prueba2/HolaMundo');

if ($oSoap->fault)
{
echo "Error al llamar el metodo<br/>".$oSoap->getError();
}
else
{
echo $dato;
}
?>




holamundo.php
<?php
require_once('nusoap.php');


function HolaMundo ($nombre)
{

return "Hola ".$nombre;
}

$server = new soap_server();
$ns="http://localhost/webservice/prueba2/HolaMundo.php";
$server->configurewsdl('ApplicationServices',$ns);
$server->wsdl->schematargetnamespace=$ns;
$server->register('HolaMundo',array('nombre' => 'xsd:string'),array('return' => 'xsd:string'),$ns);

if (isset($HTTP_RAW_POST_DATA))
{
$input = $HTTP_RAW_POST_DATA;
}
else
{
$input = implode("\r\n", file('php://input'));
}
$server->service($input);
exit;
?>
__________________
"Cuando se adelanta un oponente, enfréntalo y salúdalo; si intenta retroceder, déjalo seguir su camino"
  #5 (permalink)  
Antiguo 25/07/2007, 10:40
Avatar de Hollman  
Fecha de Ingreso: enero-2003
Ubicación: Bogotá - Colombia
Mensajes: 202
Antigüedad: 21 años, 3 meses
Puntos: 1
Re: Webservice PHP & NuSOAP.

Hola...

1. Asumo que ambos archivos estan en la misma carpeta donde esta la librerias de nusoap.
require_once('nusoap.php');

2. Comprobar que el server funciona.

Si ejecutas la URL del servidor (http://localhost/webservice/prueba2/HolaMundo.php) te sale esta imagen?



3. En caso de cumplirse el 1er punto.
Tienes un en tu red un proxy? configura tu navegador para que omita proxy en localhost.


Comprueba esos 3 y cuentas.

PD: No se si el nombre el server holamundo.php tendria que ser HolaMundo.php
  #6 (permalink)  
Antiguo 25/07/2007, 12:11
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.931
Antigüedad: 21 años, 3 meses
Puntos: 2
Re: Webservice PHP & NuSOAP.

hola gracias por tu ayuda. ejecute el holamundo.php, pero salio esto.


Notice: Undefined index: HTTPS in c:\php\www\webservice\prueba2\nusoap.php on line 4006


ApplicationServices

View the WSDL for the service. Click on an operation name to view it's details.

* HolaMundo



ademas si presiono el link WSDL aparece esto

Notice: Undefined index: HTTPS in c:\php\www\webservice\prueba2\nusoap.php on line 4006

Warning: Cannot modify header information - headers already sent by (output started at c:\php\www\webservice\prueba2\nusoap.php:4006) in c:\php\www\webservice\prueba2\nusoap.php on line 3281



la verdad no lo compredo. saludo.
__________________
"Cuando se adelanta un oponente, enfréntalo y salúdalo; si intenta retroceder, déjalo seguir su camino"

Última edición por mveraa; 25/07/2007 a las 12:24
  #7 (permalink)  
Antiguo 26/07/2007, 06:38
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.931
Antigüedad: 21 años, 3 meses
Puntos: 2
Re: Webservice PHP & NuSOAP.

espero que alguien me pueda orientar en el tema.

saludos.
__________________
"Cuando se adelanta un oponente, enfréntalo y salúdalo; si intenta retroceder, déjalo seguir su camino"
  #8 (permalink)  
Antiguo 26/07/2007, 08:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Webservice PHP & NuSOAP.

Te esta diciendo el interprete PHP que tienes en la linea 4006 un index que no existe en el array y lo estas tratando de accesar, algo asi:
Código PHP:
$array = array();

$midatovalioso $array['algo'] * 4// $array['algo'] no existe! 
Por eso te tira ese error y por ende luego no puede modificar las cabeceras para hacer un Header.

Saludos.
  #9 (permalink)  
Antiguo 26/07/2007, 09:04
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.931
Antigüedad: 21 años, 3 meses
Puntos: 2
Re: Webservice PHP & NuSOAP.

hola aun continue explorando pero me nacio una duda.

1. cuando pongo asi el codigo.

$client = new soapclient('http://localhost/webservice/prueba2/HolaMundo.php?wsdl');

no me funciona y me muestra un error.

Notice: Undefined index: in c:\php\www\webservice\prueba3\nusoap.php on line 5901

2.ahora si lo pongo asi.

$client = new soapclient('http://localhost/webservice/prueba2/HolaMundo.php');

funciona y me muestra y me sale hola xxxxx.


alguna idea,

saludos.
__________________
"Cuando se adelanta un oponente, enfréntalo y salúdalo; si intenta retroceder, déjalo seguir su camino"
  #10 (permalink)  
Antiguo 26/07/2007, 14:59
Avatar de Hollman  
Fecha de Ingreso: enero-2003
Ubicación: Bogotá - Colombia
Mensajes: 202
Antigüedad: 21 años, 3 meses
Puntos: 1
Re: Webservice PHP & NuSOAP.

Hola Foristas!!!!


Este es un ejemplo que acabo de encontrar por la web. Es muy completo ya que accesa a B.D. Voy e empezar a explorarlo, espero les sirva a todos.


Éxitos.

Código:
http://www.phpbuilder.com/columns/kramberger20031226.php3?aid=634


Muchas gracias a Mitja Kramberger.
  #11 (permalink)  
Antiguo 05/10/2008, 12:45
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: Webservice PHP & NuSOAP.

Buenas aqui les pongo un ejemplo de Web Services con PHP y NuSOAP, espero que les pueda ayudar :

El Server ws.php:

Código PHP:
<?php
include('lib/nusoap.php');
$server = new soap_server;
$server->configureWSDL('obtenerProducto''urn:obtenerProducto');          
$server->wsdl->addComplexType('producto','complexType','struct','all','',
               array(
                        
'idProducto' => array('name' => 'idProducto''type' => 'xsd:string'),
                        
'titulo' => array('name' => 'titulo''type' => 'xsd:string'),
                        
'descripcion' => array('name' => 'descripcion''type' => 'xsd:string' ),
                        
'precio' => array('name' => 'precio''type' => 'xsd:string' ),
                        ));
                        
$server->register('obtenerProducto',
                  array(
'idProducto' => 'xsd:int'),
                  array(
'return'=>'tns:producto'),
                  
'urn:obtenerProducto',
                  
'urn:obtenerProducto#producto',
                  
'rpc',
                  
'encoded',
                  
'Este método devuelve un producto.');                            

function 
obtenerProducto($id){
    
$con = new mysqli("localhost","user","pass","productos");
    
$sql " SELECT idProducto, titulo, descripcion, precio FROM producto where idProducto = $id ";
    
$stmt $con->prepare($sql);
    
$stmt->execute();
    
$stmt->bind_result($col1,$col2,$col3,$col4);
    
$stmt->fetch();
    
$row[0] = $col1;
    
$row[1] = $col2;
    
$row[2] = $col3;
    
$row[3] = $col4;
    return array(
'idProducto' => $row[0],'titulo' => $row[1],'descripcion' => $row[2],'precio' => $row[3]);

}
// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA '';
$server->service($HTTP_RAW_POST_DATA);    
?>
El Cliente :


Código PHP:
<?php    
// incluyo nusoap 
require('lib/nusoap.php');
  
$l_oClient = new soapclient('http://localhost/ws/ws.php?wsdl''wsdl');
$l_oProxy  $l_oClient->getProxy();
        
// llama al webmethod (obtenerProducto)
$parametro $_GET['idProducto'];
$l_stResult $l_oProxy->obtenerProducto($parametro);
      
 
// imprimo resultados
   
print '<h1>Producto :</h1>'
           
'<br>Id Producto: '  $l_stResult['idProducto']
           . 
'<br>Titulo : '   $l_stResult['titulo']
           . 
'<br>Descripcion ' $l_stResult['descripcion']
           . 
'<br>Precio ' $l_stResult['precio'];
          


?>
Espero que esto les ayude en algo.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)

Última edición por jam1138; 05/10/2008 a las 18:19
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:37.