Te paso como tengo los codigos
formularios.php
<!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
<?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>";?>
<?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
<?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