Cita:
Iniciado por GatorV El register tengo entendido que tiene que ser igual:
Código PHP:
Ver original$server->register('obtenerProducto',
array('id_producto' => 'xsd:string'), // mal array('id' => 'xsd:string'), // bien array('return'=>'tns:producto'), $miURL);
Gracias GatorV ese era el error, aqui esta el codigo de los phps
ws.php
Código PHP:
<?php
require_once('lib/nusoap.php');
function obtenerProducto($id){
$con=pg_connect("host=localhost dbname=prueba user=admin password=123" ) or die("Error en la conexion a la base de datos");
$sql="select id_producto, titulo, descripcion, precio from producto where id_producto=".$id."";
$busqueda=pg_query($con,$sql) ;
if(pg_num_rows($busqueda)!=0){
while( $row = pg_fetch_object ( $busqueda)) {
$respuesta=array('id_producto' => $row->id_producto,
'titulo' => $row->titulo,
'descripcion' => $row->descripcion,
'precio' => $row->precio);
}
}
return new soapval('return', 'tns:producto', $respuesta);
}
$server = new soap_server();
$miURL='http://localhost:9090/Prueba';
$server->configureWSDL('obtenerProducto', $miURL);
$server->wsdl->schemaTargetNamespace=$miURL;
$server->wsdl->addComplexType('producto','complexType','struct','all','',
array('id_producto' => array('name' => 'id_producto', 'type' => 'xsd:int'),
'titulo' => array('name' => 'titulo', 'type' => 'xsd:string'),
'descripcion' => array('name' => 'descripcion', 'type' => 'xsd:string' ),
'precio' => array('name' => 'precio', 'type' => 'xsd:int' ),
));
$server->register('obtenerProducto',
array('id' => 'xsd:int'),
array('return'=>'tns:producto'),
$miURL);
// Use the request to (try to) invoke the service
if (isset($HTTP_RAW_POST_DATA))
{
$input = $HTTP_RAW_POST_DATA;
}
else
{
$input = implode("\r\n", file('php://input'));
}
$server->service($input);
exit;
?>
cliente.php
Código PHP:
<?php
ini_set('soap.wsdl_cache_enabled', '0');
require_once('lib/nusoap.php');
$parametro=$_POST['idproduc'];
$l_oClient = new nusoap_client('http://localhost:9090/Prueba/ws.php?wsdl','wsdl');
$err = $l_oClient->getError();
if ($err) {
// Display the error
echo '<p><b>Constructor error: ' . $err . '</b></p>';
// At this point, you know the call that follows will fail
}
$metodoALlamar = 'obtenerProducto';
$l_stResult = $l_oClient->call(
$metodoALlamar,
array('id' => $parametro),
"http://localhost:9090/Prueba",
"http://localhost:9090/Prueba/ws.php/$metodoALlamar");
// Verificacion que los parametros estan ok, y si lo estan. mostrar rta.
if ($l_oClient->fault) {
echo '<b>Error: ';
print_r($l_stResult);
echo '</b>';
} else {
$error = $l_oClient->getError();
if ($error) {
echo '<b style="color: red">Error: ' . $error . '</b>';
} else {
print '<h1>Producto :</h1>'
. '<br>Id Producto: ' . $l_stResult['id_producto']
. '<br>Titulo : ' . $l_stResult['titulo']
. '<br>Descripcion ' . $l_stResult['descripcion']
. '<br>Precio ' . $l_stResult['precio'];
echo '<h2>Request</h2>';
echo '<pre>' . htmlspecialchars($l_oClient->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2>';
echo '<pre>' . htmlspecialchars($l_oClient->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2>';
echo '<pre>' . htmlspecialchars($l_oClient->debug_str, ENT_QUOTES) . '</pre>';
}
}
?>
index.php
Código PHP:
<html>
<head>
<title>Prueba</title>
<Script languaje="javascript">
function validarFormulario(formulario){
error=false
if(!error&&formulario.idproduc.value==""){
alert('El UserId es obligatorio')
formulario.idproduc.focus()
error=true
}
return !error
}
</script>
</head>
<body>
<center>
<form name="confirmarpar" action="cliente.php" method="POST">
<table>
<tr>
<td>UserID</td>
<td><input type="text" name="idproduc" size="20" maxlength="20"/></td>
</tr>
<tr>
<td><input type="submit" name="enviar" value="Enviar" onClick="return validarFormulario(confirmarpar)"/></td>
<td><input type="reset" name="borrar" value="Borrar"/></td>
</tr>
</table>
</form>
</center>
</body>
</html>
Gracias.
Otra pregunta que tengo es como generar codigos QR en php y guardarlos, se que hay una libreria que se llama phpqrcode y hay una version completa que es la de qrlib.php y una reducida phpqrcode.php pero al desarrollar un ejemplo el comando "QRcode::png('Texto');" aparece con error de sintaxis, no he encontrado un ejemplo completo para probar esta libreria.
Gracias