Foros del Web » Programando para Internet » PHP »

nusoap devuelve text/html y no text/xml

Estas en el tema de nusoap devuelve text/html y no text/xml en el foro de PHP en Foros del Web. Hola otra vez, por favor ya no se que mas hacer el caso es que he logrado obtener esta respuesta de mi ws en nusoap: ...
  #1 (permalink)  
Antiguo 12/09/2012, 13:08
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 3
Pregunta nusoap devuelve text/html y no text/xml

Hola otra vez, por favor ya no se que mas hacer el caso es que he logrado obtener esta respuesta de mi ws en nusoap:

Código HTML:
Ver original
  1. HTTP/1.1 200 OK
  2. Date: Wed, 12 Sep 2012 18:54:31 GMT
  3. Server: Apache/2.2.8 (Win32) PHP/5.2.6
  4. X-Powered-By: PHP/5.2.6
  5. X-SOAP-Server: NuSOAP/0.9.5 (1.123)
  6. Content-Length: 1268
  7. Connection: close
  8. Content-Type: text/xml; charset=UTF-8
  9.  
  10. <?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><WmSocioRegistradoInsertarResponse 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>

supuestamente es un xml no? pero realmente como la salida de mi funcion en el WS es de tipo xsd:string
Código PHP:
$server->register('WmSocioRegistradoInsertar',array('xmlstr' => 'xsd:string'),array('return' => 'xsd:string'),$ns); 
pues lo que realmente esta devolviendo es un string que contiene un xml y cuando trato de consumir el WS con un cliente .net que espera una respuesta xml pues me salta el mensaje de "se ha recibido un text/html y se esperaba un text/xml" ya he probado con el header() en el WS en fin cualquier ayuda o idea sera inmensamente agradecida.
un saludo
  #2 (permalink)  
Antiguo 12/09/2012, 13:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: nusoap devuelve text/html y no text/xml

Y ¿colocando al principio de todo un header que diga que lo que se va a retornar es un xml al navegador en vez de un html?
Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: text/xml;');

Porque si te fijas te lo está diciendo que el content-type es un text/xml solo que tienes que indicarle al navegador de parte de tu lado.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 12/09/2012, 14:48
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: nusoap devuelve text/html y no text/xml

Hola abimaelrc, muchisimas gracias por tu respuesta y tu tiempo, ya he colocado esa linea en el top del script y nada, tambien he puesto el error_reportin en 0 por si me estaba devolviendo algun warning o algo que corrompiera la salida pero nada, ahora mismo ya no se que hacer, me pregunto si la unica via de devolver un xml es en un string???? digo no hay un xsd:xml o algo parecido? agradecere cualquier idea.
un saludo
  #4 (permalink)  
Antiguo 12/09/2012, 14:52
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: nusoap devuelve text/html y no text/xml

este es el codigo del WS por si surge alguna idea:
Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: text/xml;');
  3. require_once 'lib/nusoap.php';
  4. $ns = "http://www.namespace.com/";
  5. $server = new soap_server();
  6. $server->configureWSDL('SociosRegistrados',$ns);
  7. $server->wsdl->schemaTargetNamespace = $ns;
  8. $server->soap_defencoding = 'UTF-8';
  9. $server->register('WmSocioRegistradoInsertar',array('xmlstr' => 'xsd:string'),array('return' => 'xsd:string'),$ns);
  10. $server->register('WmSocioRegistradoActualizar',array('xmlstr' => 'xsd:string'),array('return' => 'xsd:string'),$ns);
  11.  
  12.  
  13. function WmSocioRegistradoInsertar($xmlstr){    
  14.     $error = 0;
  15.     $totalInsertados = 0;
  16.     $xml = @simplexml_load_string($xmlstr);
  17.     $xml->registerXPathNamespace('ns', 'http://www.namespace.com/');    
  18.     if($xml->xpath('//ns:oWmSocioRegistradoInsertarIn')){
  19.         foreach ($xml->children('http://schemas.xmlsoap.org/soap/envelope/')->children('http://www.namespace.com/')->WmSocioRegistradoInsertar->oWmSocioRegistradoInsertarIn as $cliente){        
  20.             $sUsuarioWS = trim($cliente->sUsuarioWS);
  21.             $sPassWS = trim($cliente->sPassWS);      
  22.             $sUsername = trim($cliente->sUsername);
  23.             $sPassword = trim($cliente->sPassword);
  24.             $sNombre = trim($cliente->sNombre);
  25.             $sLicencia = trim($cliente->sLicencia);
  26.             $sSexo = trim($cliente->sSexo);
  27.             $dFechaNac = trim($cliente->dFechaNac);
  28.             $sMovil = trim($cliente->sMovil);
  29.             $sEmail= trim($cliente->sEmail);
  30.             $iSocioRegistradoTipoPermiso = trim((int)$cliente->iSocioRegistradoTipoPermiso);      
  31.             if (($sUsername != "")
  32.                 && ($iSocioRegistradoTipoPermiso != "")
  33.                 && ($iSocioRegistradoTipoPermiso != 0)
  34.                 && (is_numeric($iSocioRegistradoTipoPermiso))){    
  35.                     if (!encontrando($sUsername)){
  36.                         if(insertando($sUsuarioWS,$sPassWS,$sUsername,$sPassword,$sNombre,$sLicencia,$sSexo,$dFechaNac,$sMovil,$sEmail,$iSocioRegistradoTipoPermiso))
  37.                            $totalInsertados++;                                            
  38.                     }
  39.                 }else{
  40.                     $error = 1;
  41.                 }
  42.                
  43.         }            
  44.     }else{
  45.         $error = 2;        
  46.     }
  47.     if ($error == 1){
  48.         $error_msj = "Ha dejado campos obligatorios vac&iacute;os &oacute; con errores!<br />";
  49.         $salida .= "Se han insertado (".$totalInsertados.") registros.";
  50.     }elseif($error == 2){
  51.         $error_msj = html_entity_decode("No se ha encontrado el contenedor <oWmSocioRegistradoInsertarIn></oWmSocioRegistradoInsertarIn> en su entrada");
  52.         $salida = "Se han insertado (".$totalInsertados.") registros.";
  53.     }else{
  54.         $salida = "Se han insertado (".$totalInsertados.") registros.";
  55.     }
  56.     $contenido = '<?xml version="1.0" encoding="UTF-8"?>';
  57.     $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">';
  58.     $contenido .= '<soap:Body><WmSocioRegistradoInsertarResponse xmlns="http://www.namespace.com/">';
  59.     $contenido .= '<WmSocioRegistradoInsertarResult>';
  60.     $contenido .= '<oError>';
  61.     $contenido .= '<iError>1</iError><sMensaje></sMensaje>';
  62.     $contenido .= '</oError>';
  63.     $contenido .= '<oResp>';
  64.     if($error == 0){
  65.         $contenido .= '<iResp>1</iResp><sMensaje>Correcto</sMensaje>';    
  66.     }else{
  67.         $contenido .= '<iResp>1</iResp><sMensaje>'.$error_msj.'</sMensaje>';            
  68.     }    
  69.     $contenido .= '</oResp>';
  70.     $contenido .= '</WmSocioRegistradoInsertarResult>';
  71.     $contenido .= '</WmSocioRegistradoInsertarResponse>';
  72.     $contenido .= '</soap:Body></soap:Envelope>';    
  73.     return new soapval('return', 'xsd:string', $contenido);
  74. }
  75. .......
  #5 (permalink)  
Antiguo 12/09/2012, 14:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: nusoap devuelve text/html y no text/xml

¿Tú estas enviando la información o tu estas tratando de leer desde otra página?
Trata de ver el código fuente, también verifica si no está en utf8 porque eso envia unos caracteres adicionales que solo un hex Editor lo puede leer para que lo puedas remover o con tan solo cambiar el archivo a utf8 sin bom o ansi lo resuelves. También elimina del php.ini que se ejecute short_open_tag
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 12/09/2012, 15:09
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: nusoap devuelve text/html y no text/xml

Yo estoy creando el WS y cuando lo consumo con un cliente nusoap no hay problema ninguno, solo cuando tratan de consumirlo desde .net es que reciben el error mensionado y no funciona la insercion de datos otra cosa que he hecho es que me he instalado un plugin de ie "display iehttpheader" y cuando ejecuto el cliente obtengo :
HTTP/1.1 200 OK
Date: Wed, 12 Sep 2012 20:49:51 GMT
Server: Apache/2.2.8 (Win32) PHP/5.2.6
X-Powered-By: PHP/5.2.6
X-SOAP-Server: NuSOAP/0.9.5 (1.123)
Content-Length: 1268
Connection: close
Content-Type: text/xml; charset=UTF-8
......todo el xml....

esto es cuando imprimo el $cliente->response desde mi consumidor pero en el plugin de ie me pone:

HTTP/1.1 200 OK
Date: Wed, 12 Sep 2012 21:03:31 GMT
Server: Apache/2.2.8 (Win32) PHP/5.2.6
X-Powered-By: PHP/5.2.6
Content-Length: 1535
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

y no se por que o como solucionarlo!!!!!
otra vez un millon de gracias abimaelrc
un saludo
  #7 (permalink)  
Antiguo 12/09/2012, 15:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: nusoap devuelve text/html y no text/xml

Hmmmm ¿y el texto que envia al principio, puedes copiar las primeras vamos a decir 4 lineas del código fuente de lo que retorna?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 12/09/2012, 15:30
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: nusoap devuelve text/html y no text/xml

eso quería que vieras a ver si se te ocurre algo, estas son las salidas:
Código PHP:
Ver original
  1. var_dump($response);
devuelve:

string(534) "11Correcto"

Código PHP:
Ver original 
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.golfspain.com/"><WmSocioRegistradoInsertarResult><oError><iError >1</iError><sMensaje></sMensaje></oError><oResp><iResp>1</iResp><sMensaje>Correcto</sMensaje></oResp></WmSocioRegistradoInsertarResult></WmSocioRegistradoInsertarResponse></soap:Body></soap:Envelope>"

Código PHP:
Ver original
  1. print_r($cliente->response);
devuelve:

HTTP/1.1 200 OK
Date: Wed, 12 Sep 2012 21:24:58 GMT
Server: Apache/2.2.8 (Win32) PHP/5.2.6
X-Powered-By: PHP/5.2.6
X-SOAP-Server: NuSOAP/0.9.5 (1.123)
Content-Length: 1268
Connection: close
Content-Type: text/xml; charset=UTF-8

<?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.golfspain.com/"><WmSocioRegistradoInsertarResult><oError><iError >1</iError><sMensaje></sMensaje></oError><oResp><iResp>1</iResp><sMensaje>Correcto</sMensaje></oResp></WmSocioRegistradoInsertarResult></WmSocioRegistradoInsertarResponse></soap:Body></soap:Envelope>
  #9 (permalink)  
Antiguo 12/09/2012, 15:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: nusoap devuelve text/html y no text/xml

Pero ¿estás también trayendo en el cuerpo de la página esa primera parte?

Cita:
HTTP/1.1 200 OK
Date: Wed, 12 Sep 2012 21:24:58 GMT
Server: Apache/2.2.8 (Win32) PHP/5.2.6
X-Powered-By: PHP/5.2.6
X-SOAP-Server: NuSOAP/0.9.5 (1.123)
Content-Length: 1268
Connection: close
Content-Type: text/xml; charset=UTF-8
Porque si es así entonces ahi tienes un problema, debería ser solamente
Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
En la primera línea.
Otra cosa importante, ya que el archivo está en utf-8 deberías setear el header como
Código PHP:
Ver original
  1. header('Content-Type: text/xml; charset=UTF-8');
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 12/09/2012, 15:36
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: nusoap devuelve text/html y no text/xml

Perdona abimaelrc no te sigo, cuando me dices que si estoy trayendo el cuerpo de la pagina? a que te refieres? yo lo que trato es de construir el xml en la funcion con las caracteristicas que me piden y luego lo envio como salida de la funcion! es a eso a lo que te refieres?
  #11 (permalink)  
Antiguo 12/09/2012, 15:39
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: nusoap devuelve text/html y no text/xml

No, a lo que voy es que si estás trayendo tambien la información del response en el xml. Pero tal vez lo colocaste solo aqui para que yo viera. La pregunta es, ¿en la primera línea esta declarado lo de <?xml.....?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 12/09/2012, 15:41
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: nusoap devuelve text/html y no text/xml

Ahhh ya entiendo lo que me dices, NO ese encabezado lo muestra solo cuando imprimo el response del objeto ($cliente-response;)

cuando imprimo directamente la variable var_dump(htmlspecialchars($response));
obtengo solo:
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.golfspain.com/"><WmSocioRegistradoInsertarResult><oError><iE rror >1</iError><sMensaje></sMensaje></oError><oResp><iResp>1</iResp><sMensaje>Correcto</sMensaje></oResp></WmSocioRegistradoInsertarResult></WmSocioRegistradoInsertarResponse></soap:Body></soap:Envelope>"
  #13 (permalink)  
Antiguo 12/09/2012, 15:43
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: nusoap devuelve text/html y no text/xml

aquí es donde, en la funcion, creo la salida y concateno los valores :

Código PHP:
Ver original
  1. .........
  2.  $contenido = '<?xml version="1.0" encoding="UTF-8"?>';
  3.     $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">';
  4.     $contenido .= '<soap:Body><WmSocioRegistradoInsertarResponse xmlns="http://www.namespace.com/">';
  5.     $contenido .= '<WmSocioRegistradoInsertarResult>';
  6.     $contenido .= '<oError>';
  7.     $contenido .= '<iError>1</iError><sMensaje></sMensaje>';
  8.     $contenido .= '</oError>';
  9.     $contenido .= '<oResp>';
  10.     if($error == 0){
  11.         $contenido .= '<iResp>1</iResp><sMensaje>Correcto</sMensaje>';    
  12.     }else{
  13.         $contenido .= '<iResp>1</iResp><sMensaje>'.$error_msj.'</sMensaje>';            
  14.     }    
  15.     $contenido .= '</oResp>';
  16.     $contenido .= '</WmSocioRegistradoInsertarResult>';
  17.     $contenido .= '</WmSocioRegistradoInsertarResponse>';
  18.     $contenido .= '</soap:Body></soap:Envelope>';    
  19.     return new soapval('return', 'xsd:string', $contenido);
  #14 (permalink)  
Antiguo 12/09/2012, 15:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: nusoap devuelve text/html y no text/xml

Sinceramente no te puedo indicar mucho, solo que te asegures primero que todo sea utf8 (archivo, header y la información que estas suministrando tenga como valor utf8) y segundo que al principio tengas <?xml....

Por lo demás no se que decirte
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #15 (permalink)  
Antiguo 12/09/2012, 15:56
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: nusoap devuelve text/html y no text/xml

muchas gracias de todas formas por tu tiempo y ayuda, una cosa que quisiera tener claro, cuando pongo el top del fichero el header(.....); y trato de acceder a la url del ws me da error y me dice que xml mal formado asi que he puesto el header(...); en las funciones justo antes de enviar el valor :
Código PHP:
Ver original
  1. .....
  2.     header("Content-Type:text/xml");
  3.     return new soapval('return', 'xsd:string', $contenido);

es esto correcto?
un saludo
  #16 (permalink)  
Antiguo 12/09/2012, 23:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: nusoap devuelve text/html y no text/xml

Si dice xml mal formado tal vez ahí está el problema. Debes tener algo que no esta cerrado correctamente, te recomiendo que vayas construyendo el XML en forma paulatina hasta que logres ver donde está el error o tal vez lo formes de una vez correctamente.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: nusoap, salida, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:32.