
02/03/2006, 10:22
|
| | Fecha de Ingreso: diciembre-2005 Ubicación: Ciudad de México
Mensajes: 45
Antigüedad: 19 años, 4 meses Puntos: 1 | |
NuSOAP-AJAX Hola a todos,
mi pregunta principal es se estos dos toolkits (NuSOAP y AJAX) tienen algún problema para convivir ya que estoy intentando desarrollar un cliente para un webservice con ajax. El problema es que el servidor del webservice ya lo prove con un cliente php y funciona a la perfección, pero al intentar usarlo con un cliente programado con SAJAX(php) un método remoto me devuelve basura en lugar de la cadena esperada. Y aquí les presento algo del código:
Servidor
Código:
<?php
require_once('lib/nusoap.php');
global $conexion1;
global $conexion2;
global $con1;
global $con2;
$con1=$con2=true;
$servicio1 = new soap_server();
$servicio1->configureWSDL('modificawsdl', 'urn:modificawsdl');
// Register the method to expose
$servicio1->register('consulta', // nombre del método
array('cadSql' => 'xsd:string'), // parámetros de entrada
array('return' => 'xsd:string'), // parámetros de salida
'urn:consultawsdl', // espacio de nombres
'urn:consultawsdl#consulta', // soapaction
'rpc', // style
'encoded', // use
'Realiza una lectura a la base de datos' // documentation
);
$servicio1->register('modifica', //nombre del método
array('cadSql' => 'xsd:string'), // parámetros de entrada
array('return' => 'xsd:string'), // parámetros de salida
'urn:modificawsdl', // espacio de nombred
'urn:modificawsdl#modifica', // soapaction
'rpc', // style
'encoded', // use
'Realiza una modificación a la base de datos' // documentación
);
function conecta(){
global $conexion1;
global $conexion2;
global $con1;
global $con2;
$conexion1 = mysql_connect('10.27.4.29:3306', 'root', 'mgalicia');
$host="10.27.4.9";
$puerto="54323";
$base="prueba";
$usr="mario";
$cve="mario";
$conexion2=pg_connect("host=$host port=$puerto user=$usr password=$cve dbname=$base");
//actualiza();
if(!$conexion1)
$con1=false;
else
$con1=true;
if(!$conexion2)
$con2=false;
else
$con2=true;
}
function actualiza(){
global $conexion1;
global $conexion2;
global $con1;
global $con2;
$borra=false;
if($con1&&$con2)
return true;
if(file_exists("res.rep"))
if(!($cad=file_get_contents("res.rep")))
return false;
else{
$arreglo=explode("@",$cad);
if(!$con1&&($conexion1!=false)){
foreach ($arreglo as $query)
mysql_query($query,$conexion1);
$borra=true;
}
if(!$con2&&($conexion2!=false)){
foreach ($arreglo as $query)
pg_query($conexion2,$query);
$borra=true;
}
if($borra)
unlink("res.rep");
return true;
}
else
return true;
}
//Funciones remotas
function consulta($cadSql){
global $conexion1;
global $conexion2;
global $con1;
global $con2;
conecta();
if($con1&&$con2){
$cad="";
$resultado=mysql_query($cadSql,$conexion1);
for($c=0; $c<pg_num_rows($resultado); $c++){
$mbusqueda=mysql_fetch_assoc($resultado,$c);
foreach ($mbusqueda as $valor)
if($cad=="")
$cad=$valor;
else
$cad=$cad.",".$valor;
}
mysql_close($conexion1);
pg_close($conexion2);
}
else
if($con1){
$cad="";
$resultado=mysql_query($cadSql,$conexion1);
for($c=0; $c<pg_num_rows($resultado); $c++){
$mbusqueda=mysql_fetch_assoc($resultado,$c);
foreach ($mbusqueda as $valor)
if($cad=="")
$cad=$valor;
else
$cad=$cad.",".$valor;
}
mysql_close($conexion1);
}
else
if($con2){
$cad="";
$resultado=pg_query($conexion2,$cadSql);
if($resultado==false)
return false;
for($c=0; $c<pg_num_rows($resultado); $c++){
$matres=pg_fetch_assoc($resultado,$c);
foreach ($matres as $valor)
if($cad=="")
$cad=$valor;
else
$cad=$cad.",".$valor;
pg_close($conexion2);
}
}
else{
return false;
}
return $cad;
}
function modifica($cadSql){
global $conexion1;
global $conexion2;
global $con1;
global $con2;
conecta();
if($con1&&$con2){
pg_query($conexion2,$cadSql);
pg_close($conexion2);
mysql_query($cadSql,$conexion1);
mysql_close($conexion);
}
else
if($con1){
mysql_query($cadSql,$conexion1);
mysql_close($conexion);
$file=fopen("resp.rep","a");
fwrite($file,$cadSql."con2@");
fclose($file);
}
else
if($con2){
pg_query($conexion2,$cadSql);
pg_close($conexion2);
$file=fopen("resp.rep","a");
fwrite($file,$cadSql)."con1@";
fclose($file);
}
else{
return false;
}
return true;
}
// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$servicio1->service($HTTP_RAW_POST_DATA);
?>
Función cliente
Código:
require("Sajax.php");
require_once('lib/nusoap.php');
global $cliente1;
$cliente1 = new soapclient('http://10.27.4.9/~mgalicia/webservices/nusoap/pru4wsdl.xml', true);
function busca($apellido_pat_autor,$nombre_autor){
global $cliente1;
$nom=$apellido_pat_autor." ".$nombre_autor;
$pru=verificaAutor($nom);
$param=array('cadSql' => "SELECT * FROM autor INNER JOIN libro on (autor.id_autor=libro.id_autor) WHERE nombre_autor ='Kundera Milan';");
$result = $cliente1->call('consulta', $param);
$rbusqueda=explode(",",$result);
$cad="";
foreach($rbusqueda as $val)
if($cad!="")
$cad=$cad.",'".$val."'";
else
$cad="'".$val."'";
//"'".pg_fetch_result($rbusqueda,0,"nombre_libro")."','".pg_fetch_result($rbusqueda,0,"ciudad_autor")."','".pg_fetch_result($rbusqueda,0,"id_autor")."','".pg_fetch_result($rbusqueda,0,"id_libro")."'";
return $result;
}
función cliente javascript
Código:
function do_busca_cb(z) {
arrBusca=eval("new Array(" + z +")");
actualizaCampos();
do_listaLibros();
}
function do_busca() {
var x, y;
x = document.getElementById("apellido_pat_autor").value;
y = document.getElementById("nombre_autor").value;
x_busca(x, y, do_busca_cb);
arrBusca=new Array();
}
|