Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/09/2012, 07:11
uchihah
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 4 meses
Puntos: 3
Pregunta Forzar response tipo XML en WS nusoap

Hola a todos, he buscado muchisimo en internet y no encuentro solucion alguna y ya no tengo mas ideas a respecto el problema es el siguiente:
he implementado un WS con NuSoap y cuando lo trato de consumir con un cliente nusoap tambien todo funciona bien pero cuando tratan de consumirlo x ejemplo desde .net reciben el siguiente mensaje:

El cliente encontró un tipo de contenido de respuesta de ' text/html, pero se esperaba 'text/xml'.

he leido que puede ser un error que devuelva el WS pero es que no logro visualizar ese error, mi pregunta es :
Como puedo forzar al ws a que la salida sea siempre un XML, aqui les dejo el codigo por si alguien me puede ayudar un poco, de verdad lo necesito muchisimo pues ya no se que otra cosa hacer!
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->soap_defencoding 'UTF-8'
$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 
WmSocioRegistradoInsertar($xmlstr){    
    
$error 0;
    
$totalInsertados 0;
    
$xml = @simplexml_load_string($xmlstr);
    foreach (
$xml->oWmSocioRegistradoInsertarIn 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);
        
$sEmailtrim($cliente->sEmail);
        
$iSocioRegistradoTipoPermiso trim((int)$cliente->iSocioRegistradoTipoPermiso);      

        if ((
$sUsername != "")
            && (
$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){
            
$error_msj "Ha dejado campos obligatorios vac&iacute;os &oacute; con errores!<br />";
            
$salida .= "Se han insertado (".$totalInsertados.") registros.";
        }else{
            
$salida "Se han insertado (".$totalInsertados.") registros.";
    }
    
$contenido '<?xml version="1.0" encoding="UTF-8"?>';
    
$contenido .= '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">';
    
$contenido .= '<soap:Body><WmSocioRegistradoInsertarResponse xmlns="http://www.golfspain.com/">';
    
$contenido .= '<WmSocioRegistradoInsertarResult>';
    
$contenido .= '<oError>';
    
$contenido .= '<iError>1</iError><sMensaje></sMensaje>';
    
$contenido .= '</oError>';
    
$contenido .= '<oResp>';
    if(
$error == 0){
        
$contenido .= '<iResp>1</iResp><sMensaje>Correcto</sMensaje>';    
    }else{
        
$contenido .= '<iResp>1</iResp><sMensaje>'.$error_msj.'</sMensaje>';             
    }    
    
$contenido .= '</oResp>';
    
$contenido .= '</WmSocioRegistradoInsertarResult>';
    
$contenido .= '</WmSocioRegistradoInsertarResponse>';
    
$contenido .= '</soap:Body></soap:Envelope>';     

    return new 
soapval('return''xsd:string'htmlspecialchars($contenido));
}
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA '';
$server->service($HTTP_RAW_POST_DATA);
?>
lo ke devuelve:
string(720) "<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><WmSocioRegistradoInsertarRe sponse xmlns="http://www.namespace.com/"><WmSocioRegistradoInsertarResult><oError><iError >1</iError><sMensaje></sMensaje></oError><oResp><iResp>1</iResp><sMensaje>Correcto</sMensaje></oResp></WmSocioRegistradoInsertarResult></WmSocioRegistradoInsertarResponse></soap:Body></soap:Envelope>"
un millon de gracias de antemano
saludos