El cliente encontró un tipo de contenido de respuesta de ' text/html, pero se esperaba 'text/xml'.
Error de la solicitud con el mensaje de error:
--
Warning: simplexml_load_string() ecpects parameter 1 to be string,
array given in.....
Fatal error: Call to a member function xpath() on non-object in .....
--
dejo aqui el codigo del WS y el consumidor que he hecho (que funciona pero con la entrada tipo string). agradeceria muchisimo cualquier ayuda o idea que puedan darme, muchas gracias de antemano.
ws server:
Código PHP:
<?php
require_once 'lib/nusoap.php';
$ns = "http://www.namespace.com/";
$server = new soap_server();
$server->configureWSDL('SociosRegistrados',$ns);
$server->wsdl->schemaTargetNamespace = $ns;
$server->register('WmSocioRegistradoInsertar',array('xmlstr' => 'xsd:string'),array('return' => 'xsd:string'),$ns);
$server->register('WmSocioRegistradoActualizar',array('xmlstr' => 'xsd:string'),array('return' => 'xsd:string'),$ns);
function conectar(){
$host = urldecode("host");
$conexion = mysql_connect($host, "user", "pass");
mysql_select_db("database",$conexion);
return $conexion;
}
function WmSocioRegistradoInsertar($xmlstr){
$xml = simplexml_load_string($xmlstr);
$error = 0;
$totalInsertados = 0;
if ($xml->xpath('//usuario')){
foreach ($xml->usuario as $cliente){
$sUsuarioWS = trim($cliente->sUsuarioWS);
$sPassWS = trim($cliente->sPassWS);
$sUsername = trim($cliente->sUsername);
$sPassword = trim($cliente->sPassword);
$sNombre = trim($cliente->sNombre);
$sLicencia = trim($cliente->sLicencia);
$sSexo = trim($cliente->sSexo);
$dFechaNac = trim($cliente->dFechaNac);
$sMovil = trim($cliente->sMovil);
$sEmail= trim($cliente->sEmail);
$iSocioRegistradoTipoPermiso = trim((int)$cliente->iSocioRegistradoTipoPermiso);
if (($sUsername != "")
&& ($sPassword != "")
&& ($sNombre != "")
&& ($sLicencia != "")
&& ($sSexo != "" )
&& ($dFechaNac != "")
&& ($sMovil != "")
&& ($sEmail != "" )
&& ($iSocioRegistradoTipoPermiso != "")
&& ($iSocioRegistradoTipoPermiso != 0)
&& (is_numeric($iSocioRegistradoTipoPermiso))){
if (!encontrando($sUsername)){
if(insertando($sUsuarioWS,$sPassWS,$sUsername,$sPassword,$sNombre,$sLicencia,$sSexo,$dFechaNac,$sMovil,$sEmail,$iSocioRegistradoTipoPermiso))
$totalInsertados++;
}
}else{
$error = 1;
}
}
if ($error == 1){
$salida = "Ha dejado campos obligatorios vacíos ó con errores!<br />";
$salida .= "Se han insertado (".$totalInsertados.") registros.";
}else{
$salida = "Se han insertado (".$totalInsertados.") registros.";
}
}else {
$salida = htmlentities("No se ha encontrado el contenedor <usuario>...</usuario> en su entrada!");
}
return new soapval('return', 'xsd:string', $salida);
}
function insertando($sUsuarioWS,$sPassWS,$sUsername,$sPassword,$sNombre,$sLicencia,$sSexo,$dFechaNac,$sMovil,$sEmail,$iSocioRegistradoTipoPermiso){
$conn = conectar();
$created = time();
$sql = "insert into users (uid, name, pass, mail,created) values ('', '$sUsername' , '$sPassword', '$sEmail','$created')";
$datarow = mysql_query($sql, $conn) or die(mysql_error());
//inserto en backup
$sql_backup = "insert into golf_backup (id, sUsuarioWS, sPassWS, sUsername, sPassword, sNombre, sLicencia, sSexo, dFechaNac, sMovil, sEmail, iSocioRegistradoTipoPermiso) values ('','$sUsuarioWS', '$sPassWS', '$sUsername', 'escorpionpass', '$sNombre', '$sLicencia', '$sSexo', '$dFechaNac', '$sMovil', '$sEmail', '$iSocioRegistradoTipoPermiso')";
$datarow_backup = mysql_query($sql_backup, $conn) or die(mysql_error());
if($datarow){
return true;
}else return false;
}
function borrando($userN){
$conn = conectar();
$sql = "delete from users where name = '".$userN."'";
$datarow = mysql_query($sql, $conn) or die(mysql_error());
//borro en backup
$sql1 = "delete from golf_backup where sUsername = '".$userN."'";
$datarow1 = mysql_query($sql1, $conn) or die(mysql_error());
if(($datarow)&&($datarow1)){
return true;
}else return false;
}
function actualizando($sUsuarioWS,$sPassWS,$sUsernameOriginal,$sUsername,$sPassword,$sNombre,$sLicencia,$sSexo,$dFechaNac,$sMovil,$sEmail,$iSocioRegistradoTipoPermiso){
$conn = conectar();
$sql = "update users set name = '".$sUsername."' , pass = '".$sPassword."', mail= '".$sEmail."' where name='".$sUsernameOriginal."'";
$datarow = mysql_query($sql, $conn) or die(mysql_error());
//actualizo en backup
$sql_backup = "update golf_backup set sUsuarioWS = '".$sUsuarioWS."', sPassWS = '".$sPassWS."', sUsername = '".$sUsername."', sPassword = '".$sPassword."', sNombre = '".$sNombre."', sLicencia = '".$sLicencia."', sSexo = '".$sSexo."', dFechaNac = '".$dFechaNac."', sMovil = '".$sMovil."', sEmail = '".$sEmail."', iSocioRegistradoTipoPermiso = '".$iSocioRegistradoTipoPermiso."' where sUsername = '".$sUsernameOriginal."'";
$datarow_backup = mysql_query($sql_backup, $conn) or die(mysql_error());
if($datarow){
return true;
}else return false;
}
function encontrando($userN){
$conn = conectar();
$sql = "select * from users where name ='$userN'";
$datarow = mysql_query($sql, $conn) or die(mysql_error());
$numrow = mysql_num_rows($datarow);
if ($numrow> 0) {
return true;
}else
return false;
}
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>
Código PHP:
<?php
require_once 'lib/nusoap.php';
$wsdl = "http://localhost/ws/local_sociosregistrados.php?wsdl";
$cliente = new nusoap_client($wsdl, 'wsdl');
//llamada al metodo que procesa XML
$xmlstr = <<<XML
<?xml version='1.0'?>
<usuarios>
<usuario>
<sUsuarioWS>
user1ws
</sUsuarioWS>
<sPassWS>
user1Passws
</sPassWS>
<sUsername>
username
</sUsername>
<sUsernameOriginal>
username
</sUsernameOriginal>
<sPassword>
passssss1
</sPassword>
<sNombre>
username username
</sNombre>
<sLicencia>
2p32214
</sLicencia>
<sSexo>
Masculino
</sSexo>
<dFechaNac>
1982-12-01
</dFechaNac>
<sMovil>
98569852
</sMovil>
<sEmail>
username @servidor.com
</sEmail>
<iSocioRegistradoTipoPermiso>
2
</iSocioRegistradoTipoPermiso>
</usuario>
</usuarios>
XML;
$params = array('xmlstr' => $xmlstr);
$response = $cliente->call('WmSocioRegistradoActualizar', $params);
print_r($response);
?>