Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: javaquery en 20 de Abril 2017, 10:25

Título: Ejercicio servicio web webservice usando SOAP nusoap configureWSDL PHP y MySql
Publicado por: javaquery en 20 de Abril 2017, 10:25
Buenas .
estoy haciendo un ejercicio , en el cual tengo una base de datos en MYSQL con una tabla:

CONTACTO
      identificador int, llave primaria (auto incrementable)
      nombre varchar(50),
      dirección varchar(100),
      teléfono varchar(9),
      email varchar(100)
Me pide crear un servicio web con PHP y SOAP que haga.
 Crear contactos. se piden los datos del contacto y se guardan en la base de datos.
 
  Buscar contacto: el usuario podrá buscar contactos por el campo nombre escribiéndolo en una caja de texto de un formulario.
 
Visualizar todos los contactos: se mostrarán todos los datos de todos los contactos en una tabla

Las funciones que insertan y muestran datos de la base de datos se deben programar en el servidor SOAP. El cliente deberá mostrar la interfaz de la aplicación y llamará a las funciones del servidor cuando se requiera.

He creado el archivo servicio.php en el que tengo la funcion creaContacto

Código: [Seleccionar]

<?php
function 
creaContacto($nombre$direccion$telefono$email){

return "";
}


require_once("lib/nusoap.php");
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$server = new soap_server();
$server->configureWSDL("WSDLTST");
$server->soap_defencoding 'UTF-8';
$server->wsdl->schemaTargetNamespace $namespace;


//parametros para registrar la funcion//
$server->register(
'creaContacto',
array('nombre' => 'xsd:string''direccion' => 'xsd:string''telefono' => 'xsd:string''email' => 'xsd:string'),        

array('return'=>'xsd:string'),      
$namespace,             
false
'rpc',             
'encoded',         
'Metodo holaMundo por excelencia'

);
         
//servidor
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA'])  ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');


?>




y otro archivo llamado cliente.php desde el que llama a la funcion
Código: [Seleccionar]
<?php
   
require_once("lib/nusoap.php");
   
$client = new soapclient('http://localhost/clase11/servidor.php?wsdl');

   
//llamo a la funcion//
   
$result $client->holaMundo();
   echo 
"$result<br/>";


?>



La base de datos la tengo creada y la tabla tambien.
Título: Re:duda ejercicio webservice nusoap PHP
Publicado por: javaquery en 23 de Abril 2017, 13:15
Solicito ayuda para este ejercicio, tengo que entregarlo para antes del Martes. Si alguien puede ayduarme, estaria muy agradecido
un saludo
Título: Re:duda ejercicio webservice nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 02:36
Buenas, te dejo una posible solución.

En el archivo servidor.php e incluido las funciones para crear nuevo contacto, buscar contacto y mostrar todos los contactos:

Código: [Seleccionar]
<?php 

require_once(
'nusoap-0.9.5/lib/nusoap.php');

$miURL 'http://localhost/ejemplos/Nuevacarpeta/nusoap0000';
$server = new soap_server();
$server->configureWSDL('WSDLTST'$miURL);
$server->wsdl->schemaTargetNamespace=$miURL;


$server->register('creaContacto'
array('nombre' => 'xsd:string''direccion' => 'xsd:string',
'telefono' => 'xsd:string''email' => 'xsd:string'), 
array('return' => 'xsd:string'), 
$miURL);

$server->register('mostrarTodosContactos',
array(),
array('return' => 'xsd:string'),
$miURL);

$server->register('buscarContacto',
array('nombre' => 'xsd:string'),
array('return' => 'xsd:string'),
$miURL);

function buscarContacto($nombre) {

$conn mysqli_connect($servername$username$password$dbname);
$sql "SELECT * FROM contacto where nombre='".$nombre."'";

$resultado mysqli_query($conn$sql);

$listado "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila mysqli_fetch_array($resultado)){
$listado $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado $listado."</table>";
mysqli_close($conn);

return new soapval('return''xsd:string'$listado);

}

function mostrarTodosContactos() {

$conn mysqli_connect($servername$username$password$dbname);
$sql "SELECT * FROM contacto";

$resultado mysqli_query($conn$sql);
$listado "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila mysqli_fetch_array($resultado)){
$listado $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado $listado."</table>";
mysqli_close($conn);

return new soapval('return''xsd:string'$listado);

}

function creaContacto($nombre$direccion$telefono$email){

$conn mysqli_connect($servername$username$password$dbname);
$sql "INSERT INTO contacto (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
if (mysqli_query($conn$sql)) {
    $msg =  "Se introdujo un nuevo registro en la BD; ".$nombre;
} else {
    $msg "Error: " $sql "<br>" mysqli_error($conn);
}
mysqli_close($conn);
return new soapval('return''xsd:string'$msg);
}

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

$server->service($HTTP_RAW_POST_DATA);
?>




En los siguientes códigos, en cada uno de ellos se llama a uno de las tres funciones que contiene servidor.php.

Código: [Seleccionar]
<?php
require_once(
'nusoap-0.9.5/lib/nusoap.php');
$serverURL 'http://localhost/ejemplos/Nuevacarpeta/nusoap0000';
$serverScript 'servidor.php';
$metodoALlamar 'creaContacto';

$cliente = new nusoap_client("$serverURL/$serverScript?wsdl"'wsdl');

$result $cliente->call(
"$metodoALlamar"
array('nombre' => 'Rubia',
'direccion' => 'Colombia',
'telefono' => '456789123',
'email' => 'trapo@paco.com'),
"uri:$serverURL/$serverScript"
"uri:$serverURL/$serverScript/$metodoALlamar
);

echo 'Respuesta: '.$result;
?>

Código: [Seleccionar]
<?php
require_once(
'nusoap-0.9.5/lib/nusoap.php');
$serverURL 'http://localhost/ejemplos/Nuevacarpeta/nusoap0000';
$serverScript 'servidor.php';
$metodoALlamar 'buscarContacto';

$cliente = new nusoap_client("$serverURL/$serverScript?wsdl"'wsdl');

$result $cliente->call(
"$metodoALlamar"
array('nombre' => 'Juan'), 
"uri:$serverURL/$serverScript"
"uri:$serverURL/$serverScript/$metodoALlamar
);

echo $result;

?>

Código: [Seleccionar]
<?php
require_once(
'nusoap-0.9.5/lib/nusoap.php');
$serverURL 'http://localhost/ejemplos/Nuevacarpeta/nusoap0000';
$serverScript 'servidor.php';
$metodoALlamar 'mostrarTodosContactos';

$cliente = new nusoap_client("$serverURL/$serverScript?wsdl"'wsdl');

$result $cliente->call(
"$metodoALlamar"
array(), 
"uri:$serverURL/$serverScript"
"uri:$serverURL/$serverScript/$metodoALlamar
);

echo $result;

?>

Ahora ya solo faltaría que lo acomodases con el formulario que usará el cliente.

Saludos. ;D
Título: Re:duda ejercicio webservice nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 09:15
Hola tengo unas dudas

cuando dices,
En los siguientes códigos, en cada uno de ellos se llama a uno de las tres funciones que contiene servidor.php.
yo esos archivos entiendo que son los que se ponen en el cliente para llamar a las funciones, los he puesto juntos en un archivo cliente.php

Otra cosa, se puede poner en el archivo servidor.php primero las funciones y luego los $server->register, es que asi lo explico el profesor por eso lo pregunto

El formulario lo tendria que hacer en el cliente.php , pero un formulario para todo que contenga crearcontacto, buscar y mostrar?

gracias

Título: Re:duda ejercicio webservice nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 10:09
Buenas.

Sí, esos tres códigos son de parte del cliente, lo hice separado en tres partes para que se viese mejor.

Las funciones las puedes poner en el lugar que quieras, no habrá ningún problema al ejecutar el código.

Tendrías que hacer 3 formularios, yo los haría en un archivo independiente y dependiendo de que datos se envien a clientes.php ejecutar un código u otro,en clientes.php tambíen se podrían crear tres funciones, eso ya depende de que te pueda ser más práctico a tí.

Te dejo el código de los formularios y como quedaría el archivo clientes.php.

Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Servicios web</title>
</head>
<body>
<form action="cliente.php" method="post" >
Nombre: <input type="text" name="nombre" /><br/>
Direccion: <input type="text" name="direccion" /><br/>
Teléfono: <input type="text" name="telefono" /><br/>
Email: <input type="text" name="email" /><br/>
<input type="text" name="funcion" value="creaContacto" hidden />
<input type="submit" value="Crear nuevo usuario" />
</form>
<hr/>
<form action="cliente.php" method="post" >
Nombre<input type="text" name="nombre" />
<input type="text" name="funcion" value="buscarContacto" hidden />
<input type="submit" value="Buscar Contacto" />
</form>
<hr/>
<form action="cliente.php" method="post" >
<input type="text" name="funcion" value="mostrarTodosContactos" hidden />
<input type="submit" value="Mostrar todos los contactos" />
</form>
</body>
</html>

Código: [Seleccionar]
<?php
require_once(
'nusoap-0.9.5/lib/nusoap.php');
$serverURL 'http://localhost/ejemplos/Nuevacarpeta/nusoap0000';
$serverScript 'servidor.php';
$metodoALlamar $_POST['funcion'];
$cliente = new nusoap_client("$serverURL/$serverScript?wsdl"'wsdl');

if(strcmp($metdodALlamar'creaContacto')) {
$result $cliente->call(
"$metodoALlamar"
array('nombre' => $_POST['nombre'],
'direccion' => $_POST['direccion'],
'telefono' => $_POST['telefono'],
'email' => $_POST['email']),
"uri:$serverURL/$serverScript"
"uri:$serverURL/$serverScript/$metodoALlamar
);
} else if($metdodALlamar == 'buscarContacto') {
$result $cliente->call(
"$metodoALlamar"
array('nombre' => $_POST['nombre']), 
"uri:$serverURL/$serverScript"
"uri:$serverURL/$serverScript/$metodoALlamar
);
} else if(strcmp($metdodALlamar'mostrarTodosContactos')) {
$result $cliente->call(
"$metodoALlamar"
array(), 
"uri:$serverURL/$serverScript"
"uri:$serverURL/$serverScript/$metodoALlamar
);
}


echo $result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>

Saludos. ;D
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 15:12
Me da algunos notice y un error al final
Notice: Undefined index: funcion in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 35

Notice: Undefined index: nombre in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 41

Notice: Undefined index: direccion in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 42

Notice: Undefined index: telefono in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 43

Notice: Undefined index: email in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 44

en esta lineas de codigo estarian los notice

Código: [Seleccionar]

      $metodoALlamar = $_POST['funcion'];
        $client = new nusoap_client("$namespace/$serverScript?wsdl", 'wsdl');

        if(strcmp($metodoALlamar, 'creaContacto')) {
                $result = $client->call(
                        "$metodoALlamar",
                        array('nombre' => $_POST['nombre'],
                                        'direccion' => $_POST['direccion'],
                                        'telefono' => $_POST['telefono'],
                                        'email' => $_POST['email']),


y el warning que da es el siguiente

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php?wsdl' : Extra content at the end of the document in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php:80 Stack trace: #0 C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php(80): SoapClient->SoapClient('http://localhos...') #1 {main} thrown in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 80
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 17:27
Hola Javi.

Me da la sensación de que colocaste los dos últimos códigos en un mismo archivo, lo digo por los números de línea que me comentas, el html yo lo coloque en un archivo llamado formularios.php y el código php en clientes.php

es eso??
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 17:40
Si lo puse todo en el mismo, voy a cambiarlo y te cuento, gracias
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 17:53
Te paso como tengo los codigos
formularios.php
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>Servicios web</title>
</head>
<body>
        <form action="cliente.php" method="post" >
                Nombre: <input type="text" name="nombre" /><br/>
                Direccion: <input type="text" name="direccion" /><br/>
                Teléfono: <input type="text" name="telefono" /><br/>
                Email: <input type="text" name="email" /><br/>
                <input type="text" name="funcion" value="creaContacto" hidden />
                <input type="submit" value="Crear nuevo usuario" />
        </form>
        <hr/>
        <form action="cliente.php" method="post" >
                Nombre<input type="text" name="nombre" />
                <input type="text" name="funcion" value="buscarContacto" hidden />
                <input type="submit" value="Buscar Contacto" />
        </form>
        <hr/>
        <form action="cliente.php" method="post" >
                <input type="text" name="funcion" value="mostrarTodosContactos" hidden />
                <input type="submit" value="Mostrar todos los contactos" />
        </form>
</body>
</html>

cliente.php
Código: [Seleccionar]
<?php
        
require_once("/lib/nusoap.php");
        
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
        
$serverScript 'servidor.php';
        
$metodoALlamar $_POST['funcion'];
        
$client = new nusoap_client("$namespace/$serverScript?wsdl"'wsdl');

        if(
strcmp($metodoALlamar'creaContacto')) {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(
'nombre' => $_POST['nombre'],
                                        
'direccion' => $_POST['direccion'],
                                        
'telefono' => $_POST['telefono'],
                                        
'email' => $_POST['email']),
                        
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar"
                
);
        } else if(
$metodoALlamar == 'buscarContacto') {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(
'nombre' => $_POST['nombre']),
                        
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar"
                
);
        } else if(
strcmp($metodoALlamar'mostrarTodosContactos')) {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(),
                        
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar"
                
);
        }
       

        echo 
$result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>


Código: [Seleccionar]

<?php
 
   
require_once("lib/nusoap.php");
   
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
   
$serverScript 'servidor.php';
   
$metodoALlamar 'creaContacto';



   
$client = new soapclient('http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php?wsdl');
    
$result $client->call(
                
"$metodoALlamar",
                array(
'nombre' => 'Pepe',
                                
'direccion' => 'Colombia',
                                
'telefono' => '456789123',
                                
'email' => 'trapo@paco.com'),
                
"uri:$namespace/$serverScript",
                
"uri:$namespace/$serverScript/$metodoALlamar"
        
);

        echo 
'Respuesta: '.$result
?>



<?php

   
require_once("lib/nusoap.php");
   
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
   
$serverScript 'servidor.php';
   
$metodoALlamar 'buscarContacto';

   
$client = new soapclient('http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php?wsdl');
    
$result $client->call(
                
"$metodoALlamar",
                array(
'nombre' => 'Juan'),
                
"uri:$namespace/$serverScript",
                
"uri:$namespace/$serverScript/$metodoALlamar"
        
);

        echo 
$result;

?>



<?php

   
require_once("lib/nusoap.php");
   
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
   
$serverScript 'servidor.php';
   
$metodoALlamar 'mostrarTodosContactos';

   
$client = new soapclient('http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php?wsdl');
    
$result $client->call(
                
"$metodoALlamar",
                array(),
                
"uri:$namespace/$serverScript",
                
"uri:$namespace/$serverScript/$metodoALlamar"
        
);

        echo 
$result;

?>

servidor.php

Código: [Seleccionar]
<?php


require_once("lib/nusoap.php");
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$server = new soap_server();
$server->configureWSDL("WSDLTST");
$server->soap_defencoding 'UTF-8';
$server->wsdl->schemaTargetNamespace $namespace;
  


  function creaContacto($nombre$direccion$telefono$email){

                
$conn mysqli_connect($host$user$pass$db_name)or die("Error de conexión con la base de datos");
                
$sql "INSERT INTO CONTACTO (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
                if (
mysqli_query($conn$sql)) {
                    
$msg =  "Se introdujo un nuevo registro en la BD; ".$nombre;
                } else {
                    
$msg "Error: " $sql "<br>" mysqli_error($conn);
                }
                
mysqli_close($conn);
                return new 
$msg;
        }



       function 
buscarContacto($nombre) {

                
$conn mysqli_connect($host$user$pass$db_name);
                
$sql "SELECT * FROM CONTACTO where nombre='".$nombre."'";

                
$resultado mysqli_query($conn$sql);
               
                
$listado "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
                while (
$fila mysqli_fetch_array($resultado)){
                        
$listado $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
                                .
"</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
                                .
"</td><td>".$fila['email']."</td></tr>";
                }
                
$listado $listado."</table>";
                
mysqli_close($conn);

                return 
$listado;

        }



       function 
mostrarTodosContactos() {

                
$conn mysqli_connect($host$user$pass$db_name);
                
$sql "SELECT * FROM CONTACTO";

                
$resultado mysqli_query($conn$sql);
                
$listado "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
                while (
$fila mysqli_fetch_array($resultado)){
                        
$listado $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
                                .
"</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
                                .
"</td><td>".$fila['email']."</td></tr>";
                }
                
$listado $listado."</table>";
                
mysqli_close($conn);

                return  
$listado;

        }

        
        

    

$server->register
(
'creaContacto',
array('nombre'=>'xsd:string','direccion'=>'xsd:string',
'telefono'=>'xsd:string','email'=>'xsd:string'),
array('return'=> 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea contacto'
);


$server->register
(
'mostrarTodosContactos',
        array(),
        array(
'return' => 'xsd:string'),
        
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
   


 $server->register
 (
'buscarContacto',
        array(
'nombre' => 'xsd:string'),
        array(
'return' => 'xsd:string'),
         
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);       

       
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');

?>

Cuando cargo el archivo formulario.php me muestra el formulario, pero cuando creo un usuario me da un fatal error con el siguiente comentario:
Fatal error: Uncaught SoapFault exception: [Client] Function ("call") is not a valid method for this service in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php:61 Stack trace: #0 C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php(61): SoapClient->__call('call', Array) #1 C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php(61): SoapClient->call('creaContacto', Array, 'uri:http://loca...', 'uri:http://loca...') #2 {main} thrown in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 61





Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 19:40
¿Has dado los datos de la conexión a la base de datos correctos?

$host, $user, $pass, $db_name


??
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 19:48
si, en un archivo llamado datos.php

Código: [Seleccionar]
<?php
$host 
'localhost';
$user 'root';
$pass '';
$db_name 'agenda';


?>

Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 19:53
Pero necesitas incluirlo en archivo servidor.php mediante...

Código: [Seleccionar]
require_once("datos.php");
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 19:56
Lo acabo de hacer , y ahora cuando relleno el formulario me da un fatal error, creo que el mismo que antes


Fatal error: Uncaught SoapFault exception: [Client] Function ("call") is not a valid method for this service in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php:61 Stack trace: #0 C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php(61): SoapClient->__call('call', Array) #1 C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php(61): SoapClient->call('creaContacto', Array, 'uri:http://loca...', 'uri:http://loca...') #2 {main} thrown in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 61
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 20:04
el archivo cliente.php no puede tener 61 líneas, tiene bastantes menos

mira a ver si es igual que el que modifique en tu mensaje anterior donde también dentro de clientes estaban los códigos que puse esta mañAna por separado.
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 20:14
tenia puesto el de ayer y el de hoy

ahora se me queda asi
Código: [Seleccionar]
<?php
        
require_once("/lib/nusoap.php");
        
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
        
$serverScript 'servidor.php';
        
$metodoALlamar $_POST['funcion'];
        
$client = new nusoap_client("$namespace/$serverScript?wsdl"'wsdl');

        if(
strcmp($metodoALlamar'creaContacto')) {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(
'nombre' => $_POST['nombre'],
                                        
'direccion' => $_POST['direccion'],
                                        
'telefono' => $_POST['telefono'],
                                        
'email' => $_POST['email']),
                        
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar"
                
);
        
        } else if(
$metodoALlamar == 'buscarContacto') {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(
'nombre' => $_POST['nombre']),
                        
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar"
                
);
        } else if(
strcmp($metodoALlamar'mostrarTodosContactos')) {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(),
                        
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar"
                
);
        }
       

        echo 
$result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>




Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 20:19
Ahora no me da error al darlo de alta el usuario, pero en la busqueda no me funciona
me da notice.

Notice: Undefined index: direccion in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 13

Notice: Undefined index: telefono in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 14

Notice: Undefined index: email in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 15

Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 20:23
En:
Código: [Seleccionar]
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
Tienes que quitar el nombre del archivo, solo dejando hasta donde se encuentra el archivo servidor.php.

Código: [Seleccionar]
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin";
Para que en esta línea se escriba bien la ruta...
Código: [Seleccionar]
$client = new nusoap_client("$namespace/$serverScript?wsdl", 'wsdl');
o cambias esa última línea por esta otra:
Código: [Seleccionar]
$client = new nusoap_client("$namespace?wsdl", 'wsdl');
 ;D
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 20:44
Voy a perder la cabeza con este ejercicio, me sigue dando error

Código: [Seleccionar]
<?php
        
require_once("/lib/nusoap.php");
        
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin";
        
$serverScript 'servidor.php';
        
$metodoALlamar $_POST['funcion'];
        
$client = new nusoap_client("$namespace?wsdl"'wsdl');
        if(
strcmp($metodoALlamar'creaContacto')) {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(
'nombre' => $_POST['nombre'],
                                        
'direccion' => $_POST['direccion'],
                                        
'telefono' => $_POST['telefono'],
                                        
'email' => $_POST['email']),
                         
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar
                        
                
);
        
        } else if(
$metodoALlamar == 'buscarContacto') {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(
'nombre' => $_POST['nombre']),
                         
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar
                        
                
);
        } else if(
strcmp($metodoALlamar'mostrarTodosContactos')) {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(),
                         
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar
                       
                        
                
);
        }
       

        echo 
$result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>


Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 20:53
Perdón, es que no me expliqué bien en el anterior mensaje, cuando decía "o cambias esa última línea por esta otra:"  era solo para cambiar esa parte solo.

Código: [Seleccionar]
<?php
        
require_once("/lib/nusoap.php");
        
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin";
        
$serverScript 'servidor.php';
        
$metodoALlamar $_POST['funcion'];
        
$client = new nusoap_client(""$namespace/$serverScript?wsdl""'wsdl');
        if(
strcmp($metodoALlamar'creaContacto')) {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(
'nombre' => $_POST['nombre'],
                                        
'direccion' => $_POST['direccion'],
                                        
'telefono' => $_POST['telefono'],
                                        
'email' => $_POST['email']),
                         
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar
                        
                
);
        
        } else if(
$metodoALlamar == 'buscarContacto') {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(
'nombre' => $_POST['nombre']),
                         
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar
                        
                
);
        } else if(
strcmp($metodoALlamar'mostrarTodosContactos')) {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(),
                         
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar
                       
                        
                
);
        }
       

        echo 
$result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>


Como lo dejé ahora debería funcionar.

A mí si me funciona.
 ;D
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 21:13
me error en esta linea

Código: [Seleccionar]
$client = new nusoap_client(""$namespace/$serverScript?wsdl"", 'wsdl');

¿sera esas dobles comillas?
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 21:15
este error


Parse error: syntax error, unexpected '$namespace' (T_VARIABLE) in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 7
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 21:16
Pueden ser las dobles comillas que no se que haría para ponerlas.

Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 21:25
me dao cuenta que no me inserta usuarios en la base de datos, lo he comprobado  con el phpmyadmin, pero lo raro es que cuando relleno los datos de alta de usuario lo hace y no me muestra ningun error
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 21:34
¿no te muestra ningún error ni ningún mensaje después de pulsar el botón de crear contacto?

Pega el código de servidor.php por si hubiese algún error allí.

 ;D
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 21:39
exacto

te pego el codigo de servidor.php

Código: [Seleccionar]
<?php

    require_once(
"datos.php");
require_once("lib/nusoap.php");
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$server = new soap_server();
$server->configureWSDL("WSDLTST");
$server->soap_defencoding 'UTF-8';
$server->wsdl->schemaTargetNamespace $namespace;
  


  function creaContacto($nombre$direccion$telefono$email){

                
$conn mysqli_connect($host$user$pass$db_name)or die("Error de conexión con la base de datos");
                
$sql "INSERT INTO contacto (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
                if (
mysqli_query($conn$sql)) {
                    
$msg =  "Se introdujo un nuevo registro en la BD; ".$nombre;
                } else {
                    
$msg "Error: " $sql "<br>" mysqli_error($conn);
                }
                
mysqli_close($conn);
                return new 
soapval('return''xsd:string'$msg);
        }



       function 
buscarContacto($nombre) {

                
$conn mysqli_connect($host$user$pass$db_name);
                
$sql "SELECT * FROM contacto where nombre='".$nombre."'";

                
$resultado mysqli_query($conn$sql);
               
                
$listado "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
                while (
$fila mysqli_fetch_array($resultado)){
                        
$listado $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
                                .
"</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
                                .
"</td><td>".$fila['email']."</td></tr>";
                }
                
$listado $listado."</table>";
                
mysqli_close($conn);

                
                return new 
soapval('return''xsd:string'$listado);

        }



       function 
mostrarTodosContactos() {

                
$conn mysqli_connect($host$user$pass$db_name);
                
$sql "SELECT * FROM contacto";

                
$resultado mysqli_query($conn$sql);
                
$listado "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
                while (
$fila mysqli_fetch_array($resultado)){
                        
$listado $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
                                .
"</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
                                .
"</td><td>".$fila['email']."</td></tr>";
                }
                
$listado $listado."</table>";
                
mysqli_close($conn);

                return  
$listado;

        }

        
        

    

$server->register
(
'creaContacto',
array('nombre'=>'xsd:string','direccion'=>'xsd:string',
'telefono'=>'xsd:string','email'=>'xsd:string'),
array('return'=> 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea contacto'
);


$server->register
(
'mostrarTodosContactos',
        array(),
        array(
'return' => 'xsd:string'),
        
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
   


 $server->register
 (
'buscarContacto',
        array(
'nombre' => 'xsd:string'),
        array(
'return' => 'xsd:string'),
         
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);       

       
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');

?>


     
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 21:45
Esta línea:

Código: [Seleccionar]
require_once("datos.php");
tienes que colocarla dentro de cada función, porque al colocarla fuera, desde las funciones no reconoce los valores de las variables que contiene.


 ;D
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 22:12
Ahora ya si me aparece el mensaje de usuario insertado en la bd, pero en phpmyadmin no aparecen los datos, y otra cosa cuando hago una busquedad me muestra estos errores.
Notice: Undefined index: direccion in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 12

Notice: Undefined index: telefono in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 13

Notice: Undefined index: email in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 14
ID   Nombre   Direcci�n   Tel�fono   email
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 22:33
¿Los nombres de los campos de la tabla que yo he puesto son iguales que los que tu has creado?

Cuando haces una búsqueda, las líneas que comentan los notice no se ejecutan así que no entiendo porque esta sucediendo eso.

 ;D
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 22:38
si, mira

Código: [Seleccionar]
create database agenda;
use agenda;

create table contacto (

identificador int auto_increment primary key,
nombre varchar(50),
direccion varchar(100),
telefono varchar(9),
email varchar(100));



Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 22:47
De momento en el archivo servidor.php, dentro de la función buscarContacto() en esta línea cambia id por identificador, que yo creé la tabla llamando al identificador como id.

Código: [Seleccionar]
$listado = $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre'] por
Código: [Seleccionar]
$listado = $listado."<tr><td>".$fila['identificador']."</td><td>".$fila['nombre']
y en la función mostrarTodosContactos() también hay que cambiar esa línea.

 ;D
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 22:55
ya lo he cambiado, ahora cuando inserto usuarios no muestra nada  :(
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 23:05
Ponme otra vez los códigos de cliente.php y servidor.php

A ver que es lo que se me está escapando, porque a mí me funciona bien, la única diferencia es que uso wampserver.

 >:(
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 23:08
cliente.php
Código: [Seleccionar]
<?php
        
require_once("/lib/nusoap.php");
        
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin";
        
$serverScript 'servidor.php';
        
$metodoALlamar $_POST['funcion'];
        
$client = new nusoap_client("$namespace/$serverScript?wsdl"'wsdl');
        if(
strcmp($metodoALlamar'creaContacto')) {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(
'nombre' => $_POST['nombre'],
                                        
'direccion' => $_POST['direccion'],
                                        
'telefono' => $_POST['telefono'],
                                        
'email' => $_POST['email']),
                         
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar"
                       
                
);
       
        } else if(
$metodoALlamar == 'buscarContacto') {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(
'nombre' => $_POST['nombre']),
                         
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar"
                       
                
);
        } else if(
strcmp($metodoALlamar'mostrarTodosContactos')) {
                
$result $client->call(
                        
"$metodoALlamar",
                        array(),
                         
"uri:$namespace/$serverScript",
                        
"uri:$namespace/$serverScript/$metodoALlamar"
                      
                       
                
);
        }
      

        echo 
$result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>


servidor.php
Código: [Seleccionar]
<?php

    
    require_once(
"datos.php");
require_once("lib/nusoap.php");
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$server = new soap_server();
$server->configureWSDL("WSDLTST");
$server->soap_defencoding 'UTF-8';
$server->wsdl->schemaTargetNamespace $namespace;
  


  function creaContacto($nombre$direccion$telefono$email){

                require_once(
"datos.php");
                
$conn mysqli_connect($host$user$pass$db_name)or die("Error de conexión con la base de datos");
                
$sql "INSERT INTO contacto (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
                if (
mysqli_query($conn$sql)) {
                    
$msg =  "Se introdujo un nuevo registro en la BD; ".$nombre;
                } else {
                    
$msg "Error: " $sql "<br>" mysqli_error($conn);
                }
                
mysqli_close($conn);
                return new 
soapval('return''xsd:string'$msg);
        }



       function 
buscarContacto($nombre) {

                require_once(
"datos.php");
                
$conn mysqli_connect($host$user$pass$db_name);
                
$sql "SELECT * FROM contacto where nombre='".$nombre."'";

                
$resultado mysqli_query($conn$sql);
               
                
$listado "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
                while (
$fila mysqli_fetch_array($resultado)){
                        
$listado $listado."<tr><td>".$fila['identificador']."</td><td>".$fila['nombre']
                                .
"</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
                                .
"</td><td>".$fila['email']."</td></tr>";
                }
                
$listado $listado."</table>";
                
mysqli_close($conn);

                
                return new 
soapval('return''xsd:string'$listado);

        }



       function 
mostrarTodosContactos() {

                require_once(
"datos.php");
                
$conn mysqli_connect($host$user$pass$db_name);
                
$sql "SELECT * FROM contacto";

                
$resultado mysqli_query($conn$sql);
                
$listado "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
                while (
$fila mysqli_fetch_array($resultado)){
                        
$listado $listado."<tr><td>".$fila['identificador']."</td><td>".$fila['nombre']
                                .
"</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
                                .
"</td><td>".$fila['email']."</td></tr>";
                }
                
$listado $listado."</table>";
                
mysqli_close($conn);

                return  
$listado;

        }

        
        

    

$server->register
(
'creaContacto',
array('nombre'=>'xsd:string','direccion'=>'xsd:string',
'telefono'=>'xsd:string','email'=>'xsd:string'),
array('return'=> 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea contacto'
);


$server->register
(
'mostrarTodosContactos',
        array(),
        array(
'return' => 'xsd:string'),
        
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
   


 $server->register
 (
'buscarContacto',
        array(
'nombre' => 'xsd:string'),
        array(
'return' => 'xsd:string'),
         
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);       

       
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');

?>


 



Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 23:15
Cambié algunas cosas en servidor.php

Código: [Seleccionar]
<?php
    
    
    
//require_once("datos.php");//
    
require_once("lib/nusoap.php");
    
//$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
    
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin";
    
$server = new soap_server();
    
$server->configureWSDL("WSDLTST");
    
$server->soap_defencoding 'UTF-8';
    
$server->wsdl->schemaTargetNamespace $namespace;
      


      function 
creaContacto($nombre$direccion$telefono$email){

                require_once(
"datos.php");
                
$conn mysqli_connect($host$user$pass$db_name)or die("Error de conexión con la base de datos");
                
$sql "INSERT INTO contacto (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
                if (
mysqli_query($conn$sql)) {
                    
$msg =  "Se introdujo un nuevo registro en la BD; ".$nombre;
                } else {
                    
$msg "Error: " $sql "<br>" mysqli_error($conn);
                }
                
mysqli_close($conn);
                return new 
soapval('return''xsd:string'$msg);
        }



       function 
buscarContacto($nombre) {

                require_once(
"datos.php");
                
$conn mysqli_connect($host$user$pass$db_name);
                
$sql "SELECT * FROM contacto where nombre='".$nombre."'";

                
$resultado mysqli_query($conn$sql);
               
                
$listado "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
                while (
$fila mysqli_fetch_array($resultado)){
                        
$listado $listado."<tr><td>".$fila['identificador']."</td><td>".$fila['nombre']
                                .
"</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
                                .
"</td><td>".$fila['email']."</td></tr>";
                }
                
$listado $listado."</table>";
                
mysqli_close($conn);

                
                return new 
soapval('return''xsd:string'$listado);

        }



       function 
mostrarTodosContactos() {

                require_once(
"datos.php");
                
$conn mysqli_connect($host$user$pass$db_name);
                
$sql "SELECT * FROM contacto";

                
$resultado mysqli_query($conn$sql);
                
$listado "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
                while (
$fila mysqli_fetch_array($resultado)){
                        
$listado $listado."<tr><td>".$fila['identificador']."</td><td>".$fila['nombre']
                                .
"</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
                                .
"</td><td>".$fila['email']."</td></tr>";
                }
                
$listado $listado."</table>";
                
mysqli_close($conn);

                return  new 
soapval('return''xsd:string'$listado);

        }

        
        

    

    
$server->register
    
('creaContacto',
        array(
'nombre'=>'xsd:string','direccion'=>'xsd:string',
            
'telefono'=>'xsd:string','email'=>'xsd:string'),
        array(
'return'=> 'xsd:string'),
        
$namespace,
        
false,
        
'rpc',
        
'encoded',
        
'funcion que crea contacto'
        
);


    
$server->register
    
('mostrarTodosContactos',
        array(),
        array(
'return' => 'xsd:string'),
        
$namespace,
        
false,
        
'rpc',
        
'encoded',
        
'funcion que crea muestra los contactos'
        
);
   


     
$server->register
     
('buscarContacto',
        array(
'nombre' => 'xsd:string'),
        array(
'return' => 'xsd:string'),
         
$namespace,
        
false,
        
'rpc',
        
'encoded',
        
'funcion que crea muestra los contactos'
        
);       

       
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');

?>


 


Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 23:32
lo he cambiado, ahora cuando doy de alta un usuario me sale el mensaje de usuario dado de alta en la bd, pero en el phpmyadmin no aparece, me aparecen los id (1,2,3,4..etc)pero las demas columnas nombre, telefono, email, direccion estan vacias,, claro cuando voy a buscar un usuario me sigue dando errores, son estos

Notice: Undefined index: direccion in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 11

Notice: Undefined index: telefono in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 12

Notice: Undefined index: email in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 13
identificador   Nombre   Direcci�n   Tel�fono   email

Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 23:40
Si intentas ejecutar en el navegador el archivo servidor.php si te sale por pantalla esto

(http://i.imgur.com/UDGTMNe.png)

cuando pulsas en WSDL ¿que ocurre?

 ;D
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 23:46
Me sale una pantalla que pone esto

Este fichero XML no parece tener ninguna información de estilo asociada. Se muestra debajo el árbol del documento.
 
y debajo codigo xml

Código: [Seleccionar]
<definitions targetNamespace="http://localhost/soap/WSDLTST"><types><xsd:schema targetNamespace="http://localhost/soap/WSDLTST"><xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/></xsd:schema></types><message name="creaContactoRequest"><part name="nombre" type="xsd:string"/><part name="direccion" type="xsd:string"/><part name="telefono" type="xsd:string"/><part name="email" type="xsd:string"/></message><message name="creaContactoResponse"><part name="return" type="xsd:string"/></message><message name="mostrarTodosContactosRequest"/><message name="mostrarTodosContactosResponse"><part name="return" type="xsd:string"/></message><message name="buscarContactoRequest"><part name="nombre" type="xsd:string"/></message><message name="buscarContactoResponse"><part name="return" type="xsd:string"/></message><portType name="WSDLTSTPortType"><operation name="creaContacto"><documentation>funcion que crea contacto</documentation><input message="tns:creaContactoRequest"/><output message="tns:creaContactoResponse"/></operation><operation name="mostrarTodosContactos"><documentation>funcion que crea muestra los contactos</documentation><input message="tns:mostrarTodosContactosRequest"/><output message="tns:mostrarTodosContactosResponse"/></operation><operation name="buscarContacto"><documentation>funcion que crea muestra los contactos</documentation><input message="tns:buscarContactoRequest"/><output message="tns:buscarContactoResponse"/></operation></portType><binding name="WSDLTSTBinding" type="tns:WSDLTSTPortType"><soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/><operation name="creaContacto"><soap:operation soapAction="http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php/creaContacto" style="rpc"/><input><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation><operation name="mostrarTodosContactos"><soap:operation soapAction="http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php/mostrarTodosContactos" style="rpc"/><input><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation><operation name="buscarContacto"><soap:operation soapAction="http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php/buscarContacto" style="rpc"/><input><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation></binding><service name="WSDLTST"><port name="WSDLTSTPort" binding="tns:WSDLTSTBinding"><soap:address location="http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php"/></port></service></definitions>
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 25 de Abril 2017, 23:50
La única diferencia que veo con tu código es en servidor.php la última línea, en tu código es esta:

Código: [Seleccionar]
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');
Si uso esa línea, a mi tampoco me funciona nada, pero si uso en vez de esa esta:

Código: [Seleccionar]
if ( !isset( $HTTP_RAW_POST_DATA ) ) {
$HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );
}

$server->service($HTTP_RAW_POST_DATA);

Entonces todo me funciona aunque me lanza algún notice en el archivo cliente.php.

 ;D
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 23:55
asi me inserta, pero luego en la busqueda me da notice y no me encuentra, y en mostrar todos me aparecen los id, y algun notice, pero los demas campos vacios
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 25 de Abril 2017, 23:57
Sera algo del phpmyadmin, no se es muy extraño
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: pedro,, en 26 de Abril 2017, 01:06
Bueno, seguí probando un poco y he conseguido que tu código funcione, te dejo los códigos de los cuatro archivos que usé:

formularios.php
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Servicios web</title>
</head>
<body>
<form action="cliente.php" method="post" >
Nombre: <input type="text" name="nombre" /><br/>
Direccion: <input type="text" name="direccion" /><br/>
Teléfono: <input type="text" name="telefono" /><br/>
Email: <input type="text" name="email" /><br/>
<input type="text" name="funcion" value="creaContacto" hidden />
<input type="submit" value="Crear nuevo usuario" />
</form>
<hr/>
<form action="cliente.php" method="post" >
Nombre<input type="text" name="nombre" />
<input type="text" name="funcion" value="buscarContacto" hidden />
<input type="submit" value="Buscar Contacto" />
</form>
<hr/>
<form action="cliente.php" method="post" >
<input type="text" name="funcion" value="mostrarTodosContactos" hidden />
<input type="submit" value="Mostrar todos los contactos" />
</form>
</body>
</html>

cliente.php
Código: [Seleccionar]
<?php
        
require_once("lib/nusoap.php");
        
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin";
        
$serverScript 'servidor.php';
        
$metodoALlamar $_POST['funcion'];
        
$client = new nusoap_client("$namespace/$serverScript?wsdl"'wsdl');

        if(
strcmp($metdodALlamar'creaContacto')) {
            
$result $client->call(
                
"$metodoALlamar"
                array(
'nombre' => $_POST['nombre'],
                        
'direccion' => $_POST['direccion'],
                        
'telefono' => $_POST['telefono'],
                        
'email' => $_POST['email']),
                
"uri:$namespace/$serverScript"
                
"uri:$namespace/$serverScript/$metodoALlamar
            
);
        } else if(
strcmp($metdodALlamar'buscarContacto')) {
            
$result $client->call(
                
"$metodoALlamar"
                array(
'nombre' => $_POST['nombre']), 
                
"uri:$namespace/$serverScript"
                
"uri:$namespace/$serverScript/$metodoALlamar
            
);
        } else if(
strcmp($metdodALlamar'mostrarTodosContactos')) {
            
$result $client->call(
                
"$metodoALlamar"
                array(), 
                
"uri:$namespace/$serverScript"
                
"uri:$namespace/$serverScript/$metodoALlamar
            
);
        }

        echo 
$result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>

servidor.php
Código: [Seleccionar]
<?php

    
require_once("lib/nusoap.php");
    
$namespace "http://localhost/DAW_M07_ACT_05_Javier_Martin";
    
$server = new soap_server();
    
$server->configureWSDL("WSDLTST"$namespace);
    
$server->soap_defencoding 'UTF-8';
    
$server->wsdl->schemaTargetNamespace $namespace;  

      function 
creaContacto($nombre$direccion$telefono$email){

                require_once(
"datos.php");
                
$conn mysqli_connect($servername$username$password$dbname)or die("Error de conexión con la base de datos");
                
$sql "INSERT INTO contacto (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
                if (
mysqli_query($conn$sql)) {
                    
$msg =  "Se introdujo un nuevo registro en la BD; ".$nombre;
                } else {
                    
$msg "Error: " $sql "<br>" mysqli_error($conn);
                }
                
mysqli_close($conn);
                return new 
soapval('return''xsd:string'$msg);
        }



       function 
buscarContacto($nombre) {

                require_once(
"datos.php");
                
$conn mysqli_connect($servername$username$password$dbname);
                
$sql "SELECT * FROM contacto where nombre='".$nombre."'";

                
$resultado mysqli_query($conn$sql);
               
                
$listado "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
                while (
$fila mysqli_fetch_array($resultado)){
                        
$listado $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
                                .
"</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
                                .
"</td><td>".$fila['email']."</td></tr>";
                }
                
$listado $listado."</table>";
                
mysqli_close($conn);

                
                return new 
soapval('return''xsd:string'$listado);

        }



       function 
mostrarTodosContactos() {

                require_once(
"datos.php");
                
$conn mysqli_connect($servername$username$password$dbname);
                
$sql "SELECT * FROM contacto";

                
$resultado mysqli_query($conn$sql);
                
$listado "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
                while (
$fila mysqli_fetch_array($resultado)){
                        
$listado $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
                                .
"</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
                                .
"</td><td>".$fila['email']."</td></tr>";
                }
                
$listado $listado."</table>";
                
mysqli_close($conn);

                return  new 
soapval('return''xsd:string'$listado);

        }


    
$server->register('creaContacto',
        array(
'nombre'=>'xsd:string','direccion'=>'xsd:string',
            
'telefono'=>'xsd:string','email'=>'xsd:string'),
        array(
'return'=> 'xsd:string'),
        
$namespace,
        
false,
        
'rpc',
        
'encoded',
        
'funcion que crea contacto'
        
);


    
$server->register
    
('mostrarTodosContactos',
        array(),
        array(
'return' => 'xsd:string'),
        
$namespace,
        
false,
        
'rpc',
        
'encoded',
        
'funcion que crea muestra los contactos'
        
);
   


     
$server->register
     
('buscarContacto',
        array(
'nombre' => 'xsd:string'),
        array(
'return' => 'xsd:string'),
         
$namespace,
        
false,
        
'rpc',
        
'encoded',
        
'funcion que crea muestra los contactos'
        
);       

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

    
$server->service($HTTP_RAW_POST_DATA);
?>


 



datos.php
Código: [Seleccionar]
<?php 
$servername "localhost";
$username "root";
$password "*******";
$dbname "nombreBaseDatos";
 
?>

Saludos. ;D
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 26 de Abril 2017, 09:34
Buenos dias
 he cambiado dos cosas yo en mi codigo en el archivo datos.php tengo puesto db_name y en el tuyo es dbname , luego en el servidor.php lo he cambiado , y en tu codigo tienes puesto id y en el mio identificador, he probado y sigue sin funcionarme, me inserta los datos , pero en el phpmyadmin no aparece nada, nada mas que la columna id.

Gracias
Título: Re:Ejercicio webservice usando (SOAP) nusoap PHP
Publicado por: javaquery en 26 de Abril 2017, 12:06
Ya funciona ;D ;D
 con el ultimo codigo que me pasaste

Muchas gracias ;) ;)