Comunidad de diseño web y desarrollo en internet online

Duda con envio xml en ISO-8859-1 con Nusoap

Citar            
MensajeEscrito el 18 Nov 2013 04:35 pm
Saludos foreros, escribo para ver si podéis solventarme una duda con un problemilla que tengo.
Estoy trabajando con un web service con el que conecto con nusoap de php y cuya función es enviar al web service un XML con unos datos. Hasta ahora no había tenido ningún problema porque todos los datos que se enviaban debían ser en mayúsculas sin acentos y sin símbolos, pero actualmente actualizaron el service y ahora se permite enviar todos tipo de caracteres como el ampersand o el apostrofe & ' con la condición de que el XML se les envié en ISO-8859-1

Os pongo un ejemplo del código que estoy utilizando para que os podáis hacer una idea:

Código PHP :

$clsNusoap = new SoapClient('https://www.dominio.es/servicio/asix/SolicitudService?wsdl');
   
//me piden que envié el XML codificado en base 64 y en ISO-8859-1

$xmlEncode = base64_encode ('<?xml version="1.0" encoding="ISO-8859-1"?>
<xmlEjemplo id="Ejemplo">
   <registro>
      <id>0</id>
      <nombre>Ramón</nombre>
      <razon_social>Ramon & L'est'uca</razonSocial>
   </registro>
</xmlEjemplo>';

//una vez codificado en base 64 lo envió mediante el método registrarXml

 $resultado = $clsNusoap->__soapCall("registrarXml", array('xml' => $xmlEncode));

//Y el resultado devuelto es error en el formato XML



En cambio si quito el ampersand y el apostrofe del nodo razón social del XML y pruebo de registrarlo nuevamente entonces si funciona bien.

Así que la pregunta es: ¿debo realizar algún proceso adicional para enviar el XML en ISO-8859-1 para que me acepte los caracteres especiales?

Un saludo y gracias de antemano

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie
Citar            
MensajeEscrito el 19 Nov 2013 12:11 pm
Debes reemplazar el ampersand y los apóstrofes por su equivalente en entidad de referencia:
& = &amp;
' = &apos;

En PHP tienes la función html_entities() que puedes usar para esto.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 19 Nov 2013 04:55 pm
Hola driverOp gracias por tu pronta respuesta, quieres decir que enviando la entidad html equivalente entonces ellos o mejor dicho el webservice al recibir el xml transformara dicha entidad a su caracter original?

Voy a probar pues.
Gracias

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie
Citar            
MensajeEscrito el 19 Nov 2013 07:50 pm
Yes. Así dice el estandar XML...

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 20 Nov 2013 04:10 pm
Gracias DriverOp al final me respondieron lo responsables del webservice y me comentaron que mejor que encierre dichos caracteres dentro de la etiqueta CDATA
aqui lo dejo por si a alguien le sirve.

<razon_social>
<![CDATA[Ramon & L'est'uca]]>
</razonSocial>

Un saludo y gracias

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.