Foros del Web » Programando para Internet » PHP »

Web Service en PHP

Estas en el tema de Web Service en PHP en el foro de PHP en Foros del Web. Hola gente del foro, tengo un pequeño problema con web services en PHP. Miren por ejemplo hago este pequeño web services : Código: <? //Servicio ...
  #1 (permalink)  
Antiguo 18/11/2005, 18:23
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años, 7 meses
Puntos: 15
Web Service en PHP

Hola gente del foro, tengo un pequeño problema con web services en PHP. Miren por ejemplo hago este pequeño web services :

Código:
<?
//Servicio web PHP
//
require('nusoap/lib/nusoap.php');
$servidor=new soap_server;
$servidor->register('doble');
function doble($numero)
{	
$doble=$numero*2;	
return "El doble es $doble";
}
$servidor->service($HTTP_RAW_GET_DATA);
?>
Ahora para invocarlo, hago un formulario :

Código:
<form action="http://localhost/servicioweb/servicioweb.php" method="POST">
<input type="text" name="numero"><br>
<input type="submit" value="Calcular">
</form>
y al invocarlo me sale el siguiente error :

Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of xml_set_object(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php on line 2596

Warning: Cannot modify header information - headers already sent by (output started at C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php:2596) in C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php on line 1523

Warning: Cannot modify header information - headers already sent by (output started at C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php:2596) in C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php on line 1523

Warning: Cannot modify header information - headers already sent by (output started at C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php:2596) in C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php on line 1523

Warning: Cannot modify header information - headers already sent by (output started at C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php:2596) in C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php on line 1523

Warning: Cannot modify header information - headers already sent by (output started at C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php:2596) in C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php on line 1523
Server method '' not defined in service ''

No se que estare haciendo mal, haber si alguien me podria ayudar.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #2 (permalink)  
Antiguo 21/11/2005, 06:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
No sé que código usa "nusoap" .. pero el mensaje de error te dice algunas sugerencias:

Cita:
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of xml_set_object(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in C:\Sites\Single9\rockbeach\webroot\fdd\service\nus oap.php on line 2596
En general ... no es tu script (el uso que haces de..) el que plantea el problema sino esa implementación de "webservice" que usas de terceros supongo. Revisa su web oficial, contacta a su autor .. o por lo menos indica el código completo aquí por si alguien se atreve a probarlo y ver que modificaciones necesitas, o te cambias tu configuración de PHP como ahí te dice .. o buscas otro código (más actualizado?) que haga lo mismo.

Un saludo,
  #3 (permalink)  
Antiguo 21/11/2005, 07:59
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años, 7 meses
Puntos: 2
podrias dar mas detalles,
Version de PHP (normalmente ese error lo manda cuando intentas usar scripts de php4 con php5 donde la sintaxis era funcion(&$variable) lo cual es el primer error que te manda ).

Version de nusoap, acabo de bajar la 0.7.2 y en la linea en cuestion no se hace referencia a la funcion xml_set_object que supuestamente esta causando el error.
  #4 (permalink)  
Antiguo 21/11/2005, 19:02
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años, 7 meses
Puntos: 15
Pues gracias gente pero ya resolvi mi problema era que la opcion de

allow_call_time_pass_reference
estaba desactivada en mi PHP, asi que solo lo puse en ON en el PHP.ini y se soluciono.

Y pues ahi tienen unos ejemplos sencillos:

Este es el webservice :

Código:
<?php
//Nota : debes tener desactivado el modulo php_soap
//y ademas la variable allow_call_time_pass_reference debe estar en On
//allow_call_time_pass_reference = On
require_once('nusoap.php');
$servidor=new soap_server;
//Aqui se declaran los metodos que son publicos
$servidor->register('Factorial');
function Factorial($numero)
{
    $factorial=1;
    for($i=1;$i<=$numero;$i++)
    {
         $factorial=$factorial*$i;
    }
    return $factorial;
}
$servidor->service($HTTP_RAW_POST_DATA);
?>
Y ahi tienen el script que consume este webservice :

Código:
<?php
require_once('nusoap.php');
$parametros = array('numero'=>'5');
//cambia aqui por la direccion donde esta el webservice
$cliente = new soapclient('http://localhost/servicioweb/nusoap/servicioweb.php');
/**************************************************************************
en caso de que tengas un archivo wsdl
$cliente=new soapclient('http://localhost/servicioweb/nusoap/servicioweb.php','wsdl');
creamos un proxy
$cliente_proxy=$cliente->getProxy();
$resultado=$cliente_proxy->Factorial($parametros);
*****************************************************************************/
$resultado=$cliente->call('Factorial',$parametros);
echo "El Factorial de 5 es ".$resultado;
?>
Recuerden colocar estos scripts en la misma carpeta donde esta el NuSOAP, espero que les sirva nos vemos.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)

Última edición por stone_neo; 21/11/2005 a las 19:07
  #5 (permalink)  
Antiguo 11/11/2006, 16:05
 
Fecha de Ingreso: noviembre-2006
Mensajes: 10
Antigüedad: 18 años
Puntos: 0
Ayuda please!

Stone_neo, yo tengo webservices corriendo en Windows con PHP 4 con la misma sintaxis que utilizaste mas arriba, el problema es que en Linux con PHP5 no funciona. El browser no me tira ningun error, pero la base de datos no se actualiza. Ya no se que hacer. No tenes idea de que puede estar pasando?
Saludos
  #6 (permalink)  
Antiguo 11/11/2006, 16:16
 
Fecha de Ingreso: noviembre-2006
Mensajes: 10
Antigüedad: 18 años
Puntos: 0
Este es el codigo fuente de la pagina que consume el web service:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "hachettp://doblevdoblevdoblev.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="hachettp://doblevdoblevdoblev.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>


Mientras que faltaria toda la parte de php:

<?php
// include the SOAP classes
require_once('nusoap.php');
// define parameter array (ISBN number)
$param = array('socnro' => $ape, 'docnro' => $nom);
// define path to server application
$serverpath =('hachettp://localhost/reservasws.php?wsdl');
//define method namespace
$ns="hachettp://localhost";
// create client object
$client = new soapclient1($serverpath, true);
// make the call
$client_proxy = $client->getProxy();
$apellido = $client_proxy->AgregarReserva($param);
$apellido = $client->call('AgregarReserva',$param, $ns);

unset($client);
?>

Se llama a la clase soapclient1 en lugar de soapclient porque fue renombrada esa clase en el nusoap.php.

Agradezco respuestas. Saludos.
  #7 (permalink)  
Antiguo 23/11/2006, 20:36
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años, 7 meses
Puntos: 15
Que tal Leandrop, disculpa por no atenderte antes, pero es que he estado my ocupado, pues mira pra poder ayudarte tendria que ver el codigo del servicio para poder saber si el script que consume el web service esta bien. si gustas apunta mi msn que es [email protected]. O puedes colgar aqui tu codigo para revisarlo.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #8 (permalink)  
Antiguo 23/11/2006, 22:34
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 11 meses
Puntos: 19
Fijate si te sirve esto ..

http://www.forosdelweb.com/f68/error-clase-nusoap-425927/

saludos !
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
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 12:08.