Ver Mensaje Individual
  #18 (permalink)  
Antiguo 17/04/2012, 15:40
julianrb90
 
Fecha de Ingreso: marzo-2012
Mensajes: 21
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Web service php para obtencion de datos de la base de datos postgresql

Cita:
Iniciado por GatorV Ver Mensaje
El register tengo entendido que tiene que ser igual:
Código PHP:
Ver original
  1. $server->register('obtenerProducto',
  2.                   array('id_producto' => 'xsd:string'),  // mal
  3.                   array('id' => 'xsd:string'), // bien
  4.                   array('return'=>'tns:producto'),
  5.                   $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->requestENT_QUOTES) . '</pre>';
echo 
'<h2>Response</h2>';
echo 
'<pre>' htmlspecialchars($l_oClient->responseENT_QUOTES) . '</pre>';
echo 
'<h2>Debug</h2>';
echo 
'<pre>' htmlspecialchars($l_oClient->debug_strENT_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

Última edición por julianrb90; 17/04/2012 a las 15:52