Estimados Colegas,
En esta oportunidad estoy trabajando con un Webservice al cual debo cambiarle el formato al mensaje XML en la URL y quisiera consultar si existe algun metodo del estilo URLEncoder.encode() que funcione o hayan utilizado.
Actualmente el parámetro mensaje se está enviando con el XML “crudo”, es decir, sin aplicar URL-encoding completo. Al contener caracteres como <, >, comillas, espacios y saltos de lĂnea, el servidor (Tomcat/Apache) rechaza el request antes de que el WebService pueda procesar el contenido, generando el error HTTP 400.
cUrl:='https://tx.itcsoluciones.ar/rest/v1/txs/xml?version=V251&empresa=devuser1&actividad=01&licencia=desarrollos1234&mensaje='+cXml
Para que la llamada funcione correctamente, es necesario que:
El XML ADESFA completo sea URL-encodeado (percent-encoding RFC 3986) antes de concatenarlo al parámetro mensaje.
Ejemplos:
< → %3C
→ %3E
" → %22
espacios → %20
No se utilicen entidades HTML como ", /, etc., ya que esas no corresponden a URL-encoding y provocan que el querystring se interprete incorrectamente.
Alguien ha utilizado es tipo de formato o conoce alguna forma de convertir un Xml a URL conding?
EL MENSAJE UTILIZADO ES DE ESTE TIPO:
<MensajeADESFA version = "2.0" >
<EncabezadoMensaje>
<NroReferencia></NroReferencia>
<TipoMsj>200</TipoMsj>
<CodAccion>290020</CodAccion>
<IdMsj>447</IdMsj>
<InicioTrx>
<Fecha>20260130</Fecha>
<Hora>101532</Hora>
</InicioTrx>
<Terminal>
<Tipo>PC</Tipo>
<Numero>1004</Numero>
</Terminal>
<Software>
<Nombre>xxx</Nombre>
<Version>1.1.01</Version>
</Software>
<Prestador>
<Cuit></Cuit>
<Sucursal>1</Sucursal>
<RazonSocial></RazonSocial>
</Prestador>
</EncabezadoMensaje>
<EncabezadoReceta>
<Prescriptor>
<Apellido></Apellido>
<Nombre></Nombre>
<TipoMatricula>P</TipoMatricula>
<Provincia>RIO NEGRO</Provincia>
<NroMatricula>456456</NroMatricula>
<TipoPrescriptor>M</TipoPrescriptor>
<Cuit></Cuit>
</Prescriptor>
<Beneficiario></Beneficiario>
<Financiador></Financiador>
<Credencial>
<Numero>456456</Numero>
<Track>456456</Track>
<cvc2>345</cvc2>
<ModoIngreso>A</ModoIngreso>
</Credencial>
<FechaReceta>20260130</FechaReceta>
<Dispensa>
<Fecha>20260130</Fecha>
<Hora>101532</Hora>
</Dispensa>
<Formulario>
<Fecha>20260130</Fecha>
<Numero>456456</Numero>
</Formulario>
</EncabezadoReceta>
<DetalleReceta>
<Item>
<NroItem>1</NroItem>
<CodBarras>7795345122489</CodBarras>
<CodTroquel>9961726</CodTroquel>
<Alfabeta>61726</Alfabeta>
<CantidadSolicitada>1</CantidadSolicitada>
<Generico>M</Generico>
</Item>
</DetalleReceta>
</MensajeADESFA>
Muchas gracias por sus comentarios.
Saludos Mariano