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