cancel
Showing results for 
Search instead for 
Did you mean: 

B2B outbound - XML mal formatado

Former Member
0 Kudos

Pessoal,

Eu tenho um cenário B2B Proxy to Mail utilizando Mail Package.

O que está acontecendo é que em alguns arquivos XMLS enviados em anexo está dando erro na hora de abrir, dá erro de XML mal formatado. Isso está ocorrendo de forma intermitente para alguns clientes.

Peguei o conteudo da mensagem na sxmb_moni e salvei como .xml e consegui abrir sem problemas, porém o cliente fala que não consegue abrir devido ao xml estar mal formatado.

Fazendo uma análise do arquivo que é enviado para o cliente, verifiquei que o erro ocorre na quebra de linha, ou seja, ao realizar a quebra de linha está colocando um espaço em branco.

Por exemplo, abri o arquivo no notepad, final da linha:"1234567890< /emit.

Alguém tem alguma idéia de como resolver isso?

Desde já, obrigado.

Maicon.

Accepted Solutions (0)

Answers (1)

Answers (1)

henrique_pinto
Active Contributor
0 Kudos

Tentou ativar a codificação Base64 (no proprio comm channel)?

As vezes resolve.

Outra tentativa seria usar o messagetransformbean e forçar um ContentType diferente de texto (e..g application/xml).

Abs,

Henrique.

Former Member
0 Kudos

Henrique,

Ativei a codificação do base64 no Canal de comunicação, porém o e-mail foi enviado sem anexo e sem o corpo do email preenchido.

O ContentType que estou usando no mapping é multipart/mixed; boundary="AaBb--984dfgeSSd3532"

Tem alguma idéia?

Att,

Maicon.

henrique_pinto
Active Contributor
0 Kudos

Vc tá usando a solucao do blog do Stefan Grube (java mapping) pra ter corpo do email e anexo?

Se for, daí nao vejo como mexer...

Abs,

Henrique.

Former Member
0 Kudos

Henrique, utilizei a solução do Mail Package, e faço todo o mapping gráfico. Segue abaixo um exemplo de como está sendo feito o mapeamento. Payload retirado do Test Mapping

multipart/mixed; boundary=&quot;AaBb984dfgeSSd3532&quot;</Content_Type><Content>AaBb--984dfgeSSd3532

Content-Type: text/plain; charset=UTF-8

Content-Disposition: inline

Segue anexo o arquivo XML referente a NFe número &lt;arquivo xml&gt;

Qualquer dúvida entre em contato pelo endereço eletrônico: email

Atenciosamente,

AaBb984dfgeSSd3532

Content-Type: application/xml; name=&lt;conteudo do arquivo xml&gt;.xml

Content-Disposition: attachment; filename=&lt;conteudo do arquivo xml&gt;.xml

&lt;arquivo xml&gt;

</Content></ns1:Mail>

Alguma idéia?

Obrigado desde já

henrique_pinto
Active Contributor
0 Kudos

O problema é justamente esse approach de considerar o conteúdo do XML como texto dentro de uma msg multipart...

Na verdade, quem quebra nao é vc, é o client de quem tá recebendo.

Codificar em base64 ajuda ao client nao quebrar, só que daí como vc tá montando os MIME headers na mão (usando esse approach), a codificacao base64 do adapter não vai te ajudar. Vc precisaria codificar na mão tb o XML, e deixar codificado só o conteúdo da parte XML que iria na sessão equivalente a ele...

Vc precisa codificar o conteudo do XML em base64* e incluir o header Content-Transfer-Encoding com o valor "base64", como mostrado aqui:

http://en.wikipedia.org/wiki/MIME#Multipart_messages

Aqui um link na internet que achei pra mostrar que o base64 ajuda nesse problema específico...

http://stackoverflow.com/questions/3942884/unexpected-line-breaks-when-sending-xml-attachments-using...

Abs,

Henrique.

  • Algumas opcoes:

http://www.source-code.biz/base64coder/java/

Ou tenta as classes: sun.misc.BASE64Encoder ou com.sap.aii.utilxi.base64.api.Base64.

Former Member
pedro_baroni3
Active Contributor
0 Kudos

Maicon,

Qual solução você adotou?

Abraços.

Pedro Baroni