Autor Tema: Ejercicio servicio web webservice usando SOAP nusoap configureWSDL PHP y MySql  (Leído 29298 veces)

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
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.
« Última modificación: 14 de Junio 2017, 19:07 por Ogramar »

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:duda ejercicio webservice nusoap PHP
« Respuesta #1 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

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:duda ejercicio webservice nusoap PHP
« Respuesta #2 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

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:duda ejercicio webservice nusoap PHP
« Respuesta #3 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


pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:duda ejercicio webservice nusoap PHP
« Respuesta #4 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

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #5 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

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #6 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??

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #7 en: 25 de Abril 2017, 17:40 »
Si lo puse todo en el mismo, voy a cambiarlo y te cuento, gracias

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #8 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





« Última modificación: 25 de Abril 2017, 19:38 por pedro,, »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #9 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


??

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #10 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';


?>


pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #11 en: 25 de Abril 2017, 19:53 »
Pero necesitas incluirlo en archivo servidor.php mediante...

Código: [Seleccionar]
require_once("datos.php");

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #12 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

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #13 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.

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #14 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>";
?>





javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #15 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


pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #16 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

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #17 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>";
?>



pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #18 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

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ejercicio webservice usando (SOAP) nusoap PHP
« Respuesta #19 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?

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".