Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/04/2014, 10:19
Avatar de giuli956
giuli956
 
Fecha de Ingreso: noviembre-2012
Mensajes: 149
Antigüedad: 11 años, 5 meses
Puntos: 1
Creacion de cliente webservice en Delphi, servidor con NuSoap

Hola amigos, tengo un formulario en delphi con 2 edit, uno para buscar por nombre y otro por id, y un componente memo para mostrar datos de una base de datos.
La base de datos la hice en phpmyadmin y trabajo con xampp corriendo los servicios de mysql y apache, en el localhost.

El codigo del servidor es:

Código PHP:
Ver original
  1. <?php
  2.  
  3. // Modificado para añadir la busqueda por nombre
  4.  
  5. // Modificado para utilizar nuSOAP
  6.  
  7.  
  8. // Deshabilitar cache
  9. ini_set("soap.wsdl_cache_enabled", "0");
  10.  
  11. //llamada a librería nusoap
  12. require_once('lib/nusoap.php');
  13.  
  14. //generar instancia de soap_server
  15. $servidor = new soap_server();
  16. $servidor->configureWSDL('codeappwsdl', 'urn:codeappwsdl');
  17. // Conexion a la Base de Datos
  18. //function dbConnect()
  19. //{
  20.  // $conn=mysql_connect("localhost", "root", "");
  21.  // mysql_select_db('web',$conn);
  22. //}
  23.  
  24.  
  25. // Consultar usuarios por Nombre
  26. // SQL = SELECT * FROM `agenda` WHERE nombre LIKE '%dr%'
  27. function ConsultaUsuarios($nom) {
  28.   //-----------------------------llamada a BD---------------------------------
  29.   //$conn = dbConnect();
  30.   $arrusers = array();
  31.    $conn=mysql_connect("localhost", "root", "");
  32.   mysql_select_db('web',$conn);
  33.   $sql = "SELECT * FROM `web`.`agenda` WHERE nombre LIKE '$nom'";
  34.  
  35.   $result=mysql_query($sql,$conn);
  36.  
  37.   while ($fila= mysql_fetch_array($result)){
  38.     $id=$fila['id'];  
  39.     $nombre=$fila['nombre'];
  40.     $apellidos=$fila['apellidos'];
  41.     $telefono=$fila['telefono'];
  42.     $extension=$fila['extension'];
  43.     $departamento=$fila['departamento'];
  44.     $interno=$fila['interno'];
  45.     $email=$fila['email'];  
  46.  
  47.  
  48.     // Cada registro de información se introduce en un array asociativo
  49.     $arrusers[] = array('Id'=>$id, 'Nombre'=>$nombre, 'Apellidos'=>$apellidos,
  50.                        'Telefono'=>$telefono,
  51.                        'Departamento'=>$departamento,'Email'=>$email);
  52.   }    
  53.   /*----------------------------fin llamada a BD-------------------------------*/
  54.  
  55.   return $arrusers;                        
  56. }
  57.  
  58.  
  59. // Consultar un usuario por ID
  60. function ConsultaUsuario($id) {
  61.   $arrusers = array();          //array para guardar los datos
  62.  
  63.   /*-----------------------------llamada a BD---------------------------------*/
  64.      $conn=mysql_connect("localhost", "root", "");
  65.   mysql_select_db('web',$conn);
  66.  
  67.   $sql="SELECT * FROM `web`.`agenda` WHERE id=$id";
  68.  
  69.   $result=mysql_query($sql,$conn);
  70.  
  71.   while ($fila= mysql_fetch_array($result)){
  72.     $id=$fila['id'];  
  73.     $nombre=$fila['nombre'];
  74.     $apellidos=$fila['apellidos'];
  75.     $telefono=$fila['telefono'];
  76.     $extension=$fila['extension'];
  77.     $departamento=$fila['departamento'];
  78.     $interno=$fila['interno'];
  79.     $email=$fila['email'];  
  80.  
  81.     //Cada registro de información se introduce en un array asociativo
  82.     $arrusers[] = array('Id'=>$id, 'Nombre'=>$nombre, 'Apellidos'=>$apellidos,
  83.                        'Telefono'=>$telefono, 'Extension'=>$extension,
  84.                        'Departamento'=>$departamento, 'Interno'=>$interno, 'Email'=>$email);
  85.   }    
  86.   /*----------------------------fin llamada a BD-------------------------------*/
  87.  
  88.   return $arrusers;
  89. }
  90.  
  91. // Namespace del servicio
  92. $ns = "http://localhost:8080/webservice/listado.php?wsdl";
  93.  
  94. // Establecer nombre y namespace al servicio
  95. $servidor->configureWSDL('Consulta de usuarios',$ns);
  96.  
  97. // configurar la estructura de los datos,
  98. // este arreglo es de tipo asociativo y contiene el nombre y tipo de dato.
  99. $servidor->wsdl->addComplexType(
  100.         'Estructura',
  101.         'complexType',
  102.         'struct',
  103.         'all',
  104.         '',
  105.           array(
  106.             'Id' => array('name' => 'id', 'type' => 'xsd:integer'),
  107.             'Nombre'=>array('name' => 'nombre', 'type' => 'xsd:string'),
  108.             'Apellidos'=>array('name' => 'apellidos', 'type' => 'xsd:string'),
  109.             'Telefono'=>array('name' => 'telefono', 'type' => 'xsd:string'),
  110.             'Extension'=>array('name' => 'extension', 'type' => 'xsd:integer'),
  111.             'Departamento'=>array('name' => 'departamento', 'type' => 'xsd:string'),
  112.             'Interno'=>array('name' => 'interno', 'type' => 'xsd:integer'),
  113.             'EMail'=>array('name' => 'email', 'type' => 'xsd:string')
  114.             )
  115.       );
  116.  
  117. //configurar arreglo de la estructura
  118. $servidor->wsdl->addComplexType(
  119.       'ArregloDeEstructuras',
  120.       'complexType',
  121.       'array',
  122.       'sequence',
  123.       'http://schemas.xmlsoap.org/soap/encoding/:Array',
  124.       array(),
  125.       array(
  126.         array('ref' => 'http://schemas.xmlsoap.org/soap/encoding/:arrayType',
  127.           'wsdl:arrayType' => 'tns:Estructura[]'
  128.         )
  129.       ),'tns:Estructura');
  130.  
  131. // registrar la funcion de consulta de usuario (por ID)
  132. $servidor->register('ConsultaUsuario',
  133.       array('id'=>'xsd:integer'), //tipo de dato entrada
  134.       array('return'=>'tns:ArregloDeEstructuras'), //tipo de dato salida
  135.       $ns, false,
  136.       'rpc', //tipo documento
  137.       'literal', //tipo codificacion
  138.       'Documentacion de consultaUsuarios') ; //documentacion
  139.      
  140.      
  141. // registrar la funcion de consulta de usuario (por nombre)
  142. $servidor->register('ConsultaUsuarios',
  143.       array('nom'=>'xsd:string'), //tipo de dato entrada
  144.       array('return'=>'tns:ArregloDeEstructuras'), //tipo de dato salida
  145.       $ns, false,
  146.       'rpc', //tipo documento
  147.       'literal', //tipo codificacion
  148.       'Documentacion de consultaUsuarios') ; //documentacion
  149.      
  150.  
  151. //Establecer servicio        
  152. if (isset($HTTP_RAW_POST_DATA)) {
  153.   $input = $HTTP_RAW_POST_DATA;
  154. }else{
  155.   $input = implode("\r\n", file('php://input'));
  156. }
  157.  
  158. $servidor->service($input);
  159. ?>

Obviamente accedi en el navegador para obtener la ruta del Webservice, para luego importarla con WSDLImport y generar listado.pas.

Y aqui el error: