Hola a todos, he revisado un montón de temas que hay sobre este tema pero no consigo dar con la solución.
He creado un web service en php para realizar una inserción de datos en una tabla, este paso lo hace correctamente, pero no logro recibir respuesta, es decir el return parece llegarme como vacío. Os dejo todo el código para ver si véis algo que se me esté pasando.
Código en servidor: Código PHP:
//llamar a la librería
require_once ('lib/nusoap.php');
//crear server
$server = new soap_server;
// initialize WSDL support
$server->configureWSDL( 'addNewPromowsdl' , 'urn:addNewPromowsdl' );
// place schema at namespace with prefix tns
$server->wsdl->schemaTargetNamespace = 'urn:addNewPromowsdl';
$server->wsdl->addComplexType(
'MySoapObject',
'complexType',
'struct',
'all',
'',
array(
'Nombre' => array('name'=>'Nombre','type'=>'xsd:string'),
'Apellidos' => array('name'=>'Apellidos','type'=>'xsd:string'),
'Telefono' => array('name'=>'Telefono','type'=>'xsd:string'),
'Email' => array('name'=>'Email','type'=>'xsd:string'),
'Producto' => array('name'=>'Producto','type'=>'xsd:string')
)
);
$server->wsdl->addComplexType(
'MySoapObjectArray',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:MySoapObject[]')),
'tns:MySoapObject'
);
function ProcessMySoapObject($mySoapObjects) {
$mso = $mySoapObjects[3];
$mso['Name'] = "|||";
return $mso;
}
$server->register(
'addNewPromo',
array('soapObjects'=>'tns:MySoapObjectArray'),
array('return'=>'tns:MySoapObject'),
'addNewPromowsdl',
'urn:addNewPromowsdl',
'rpc',
'encoded',
'Inserta datos');
function addNewPromo($nombre,$apellidos,$telefono,$email,$producto){
$myError = false;
$myErrorText = "";
$con = mysql_connect("localhost","server1t_wserv","W-123-serv"); //Datos del servidor de base de datos usuario y clave
if (!$con) {
$myError = true;
$myErrorText = 'Could not connect: ' . mysql_error();
return new soap_fault($myErrorText);
}
if ($myError==false)
{
mysql_select_db("server1t_wserv", $con); //Nombre de la base de datos
$sql="INSERT INTO promos (Nombre, Apellidos, Telefono, Email, Producto)
VALUES ('$nombre','$apellidos','$telefono','$email','$producto')";
if (!mysql_query($sql,$con)) {
$myError = true;
$myErrorText = mysql_error();
return new soap_fault($myErrorText);
}
}
mysql_close($con);
$result = array('nombre'=>$nombre,'apellidos'=>$apellidos);
return $result;
}
// create HTTP listener
$server->service($HTTP_RAW_POST_DATA);
exit();
Código en cliente: Código PHP:
require_once ('lib/nusoap.php');
$param = array( 'nombre' => 'prueba', 'apellidos' => 'apellido','telefono' => '0349676767','email' => '[email protected]','producto'=>'cosa');
$client = new nusoap_client('http://server1taumaco.com/WS-nusoap/servicio.php');
$response = $client->call('addNewPromo',$param);
if($client->fault)
{
echo "FAULT: <p>Code: (".$client->faultcode.")</p>";
echo "String: ".$client->faultstring;
}
else
{
echo $response;
echo "Nombre: ".$response['nombre'];
echo "<br>";
echo "Apellidos: ".$response['apellidos'];
}
Os dejo también la url de prueba.
http://server1taumaco.com/WS-nusoap/insertaPromo.php
Gracias de antemano por la ayuda.
Un saludo.