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<?php
// Modificado para añadir la busqueda por nombre
// Modificado para utilizar nuSOAP
// Deshabilitar cache
ini_set("soap.wsdl_cache_enabled", "0");
//llamada a librería nusoap
require_once('lib/nusoap.php');
//generar instancia de soap_server
$servidor = new soap_server();
$servidor->configureWSDL('codeappwsdl', 'urn:codeappwsdl');
// Conexion a la Base de Datos
//function dbConnect()
//{
// $conn=mysql_connect("localhost", "root", "");
// mysql_select_db('web',$conn);
//}
// Consultar usuarios por Nombre
// SQL = SELECT * FROM `agenda` WHERE nombre LIKE '%dr%'
function ConsultaUsuarios($nom) {
//-----------------------------llamada a BD---------------------------------
//$conn = dbConnect();
$sql = "SELECT * FROM `web`.`agenda` WHERE nombre LIKE '$nom'";
$id=$fila['id'];
$nombre=$fila['nombre'];
$apellidos=$fila['apellidos'];
$telefono=$fila['telefono'];
$extension=$fila['extension'];
$departamento=$fila['departamento'];
$interno=$fila['interno'];
$email=$fila['email'];
// Cada registro de información se introduce en un array asociativo
$arrusers[] = array('Id'=>$id, 'Nombre'=>$nombre, 'Apellidos'=>$apellidos, 'Telefono'=>$telefono,
'Departamento'=>$departamento,'Email'=>$email);
}
/*----------------------------fin llamada a BD-------------------------------*/
return $arrusers;
}
// Consultar un usuario por ID
function ConsultaUsuario($id) {
$arrusers = array(); //array para guardar los datos
/*-----------------------------llamada a BD---------------------------------*/
$sql="SELECT * FROM `web`.`agenda` WHERE id=$id";
$id=$fila['id'];
$nombre=$fila['nombre'];
$apellidos=$fila['apellidos'];
$telefono=$fila['telefono'];
$extension=$fila['extension'];
$departamento=$fila['departamento'];
$interno=$fila['interno'];
$email=$fila['email'];
//Cada registro de información se introduce en un array asociativo
$arrusers[] = array('Id'=>$id, 'Nombre'=>$nombre, 'Apellidos'=>$apellidos, 'Telefono'=>$telefono, 'Extension'=>$extension,
'Departamento'=>$departamento, 'Interno'=>$interno, 'Email'=>$email);
}
/*----------------------------fin llamada a BD-------------------------------*/
return $arrusers;
}
// Namespace del servicio
$ns = "http://localhost:8080/webservice/listado.php?wsdl";
// Establecer nombre y namespace al servicio
$servidor->configureWSDL('Consulta de usuarios',$ns);
// configurar la estructura de los datos,
// este arreglo es de tipo asociativo y contiene el nombre y tipo de dato.
$servidor->wsdl->addComplexType(
'Estructura',
'complexType',
'struct',
'all',
'',
'Id' => array('name' => 'id', 'type' => 'xsd:integer'), 'Nombre'=>array('name' => 'nombre', 'type' => 'xsd:string'), 'Apellidos'=>array('name' => 'apellidos', 'type' => 'xsd:string'), 'Telefono'=>array('name' => 'telefono', 'type' => 'xsd:string'), 'Extension'=>array('name' => 'extension', 'type' => 'xsd:integer'), 'Departamento'=>array('name' => 'departamento', 'type' => 'xsd:string'), 'Interno'=>array('name' => 'interno', 'type' => 'xsd:integer'), 'EMail'=>array('name' => 'email', 'type' => 'xsd:string') )
);
//configurar arreglo de la estructura
$servidor->wsdl->addComplexType(
'ArregloDeEstructuras',
'complexType',
'array',
'sequence',
'http://schemas.xmlsoap.org/soap/encoding/:Array',
array('ref' => 'http://schemas.xmlsoap.org/soap/encoding/:arrayType', 'wsdl:arrayType' => 'tns:Estructura[]'
)
),'tns:Estructura');
// registrar la funcion de consulta de usuario (por ID)
$servidor->register('ConsultaUsuario',
array('id'=>'xsd:integer'), //tipo de dato entrada array('return'=>'tns:ArregloDeEstructuras'), //tipo de dato salida $ns, false,
'rpc', //tipo documento
'literal', //tipo codificacion
'Documentacion de consultaUsuarios') ; //documentacion
// registrar la funcion de consulta de usuario (por nombre)
$servidor->register('ConsultaUsuarios',
array('nom'=>'xsd:string'), //tipo de dato entrada array('return'=>'tns:ArregloDeEstructuras'), //tipo de dato salida $ns, false,
'rpc', //tipo documento
'literal', //tipo codificacion
'Documentacion de consultaUsuarios') ; //documentacion
//Establecer servicio
if (isset($HTTP_RAW_POST_DATA)) { $input = $HTTP_RAW_POST_DATA;
}else{
}
$servidor->service($input);
?>
Obviamente accedi en el navegador para obtener la ruta del Webservice, para luego importarla con WSDLImport y generar listado.pas.
Y aqui el error: