Login Registre-se
ERRO CONVERSÃO Bytes[] para String [RESOLVIDO]  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
junior_salzano

JavaC Membro

Membro desde: 22/01/2018 11:13:34
Mensagens: 56
Offline

Fala galera
Bom dia,

Estou trabalhando no desenvolvimento de um webservices, e estou consumindo um xml,
Um dos campos em retorna um Byte[].

byte[] tarjaUSuaByte = solicitacao.getSolicitacaoSPSADT().getDadosBeneficiario().getIdentificadorBeneficiario();
String identificadorBeneficiario = new String(tarjaUSuaByte,"UTF-8");

Estou convertendo esse byte em string pelo metodo construtor da classe mesmo. Porem a string fica toda zuada.

Alguem já passou por isso ?

Ja testei com outros encoding tb.

Alguem puder dar uma opinião ae..

Valeu

Esta mensagem foi editada 1 vez. Última atualização foi em 15/12/2018 08:02:29

robertop

JavaC Membro

Membro desde: 10/07/2013 20:08:36
Mensagens: 348
Online

Bom dia!
Você sabe informar se esta informação vem em algum formato?
Por exemplo, por vir em GZIP.

Você também pode tentar utilizar commons codec adicionando o jar a sua aplicação



Estou te enviando o jar em anexo
 Nome do arquivo commons-codec-1.10.jar [Disk] Download
 Descrição
 Tamanho 279 Kbytes
 Baixado:  29 vez(es)

junior_salzano

JavaC Membro

Membro desde: 22/01/2018 11:13:34
Mensagens: 56
Offline

Então...

To fazendo uns testes aqui, deu quase certo, ainda esta comendo um pouco a string.



pq esta em base64
ae eu converti assim

String numeroCarteiraSADT = solicitacao.getSolicitacaoSPSADT().getDadosBeneficiario().getNumeroCarteira() != null ? solicitacao.getSolicitacaoSPSADT().getDadosBeneficiario().getNumeroCarteira() : Strings.STRING_VAZIO;
byte[] tarjaUSuaByte = solicitacao.getSolicitacaoSPSADT().getDadosBeneficiario().getIdentificadorBeneficiario();
String identificadorBeneficiario = Base64.getEncoder().encodeToString(tarjaUSuaByte);


mais ainda nao ficou 100%

junior_salzano

JavaC Membro

Membro desde: 22/01/2018 11:13:34
Mensagens: 56
Offline

A conversão deu certo,

Fazendo em base64,

porem ele tira os espaços e come alguns caracter
ainda não ta 100%

Alguem já ficou isso ?
robertop

JavaC Membro

Membro desde: 10/07/2013 20:08:36
Mensagens: 348
Online

hum, tenta assim então

Cria uma classe conforme abaixo. (eu tirei este código da net, não lembro de onde)



depois tu chama assim

Esta mensagem foi editada 1 vez. Última atualização foi em 12/12/2018 13:49:43

junior_salzano

JavaC Membro

Membro desde: 22/01/2018 11:13:34
Mensagens: 56
Offline

ta gerando um erro

Not in GZIP format
junior_salzano

JavaC Membro

Membro desde: 22/01/2018 11:13:34
Mensagens: 56
Offline

bem nessa linha da o erro

ByteArrayOutputStream obj = new ByteArrayOutputStream();


dentro da função
robertop

JavaC Membro

Membro desde: 10/07/2013 20:08:36
Mensagens: 348
Online

Certo então saber que zipado não esta vindo.
e assim
robertop

JavaC Membro

Membro desde: 10/07/2013 20:08:36
Mensagens: 348
Online

ta mas a linha que deu erro antes é no método compress.
Nem deveria usar este método
junior_salzano

JavaC Membro

Membro desde: 22/01/2018 11:13:34
Mensagens: 56
Offline

cara
valeu demais pela força.

mais infelizmente não foi, ta tenso.

Ele converte tudo certinho, porem ele muda as informações.

o xml esta uma coisa, na leitura apos a conversão muda.

ta foda
robertop

JavaC Membro

Membro desde: 10/07/2013 20:08:36
Mensagens: 348
Online

blz,
tu pode postar este array de bytes aqui?

Mas a informação que esta aqui

Esta mensagem foi editada 1 vez. Última atualização foi em 12/12/2018 16:59:00

junior_salzano

JavaC Membro

Membro desde: 22/01/2018 11:13:34
Mensagens: 56
Offline

Então..

na verdade pode ser qualquer informação, que vir o xml ele le errado.

O que acabei de pensar eh o seguinte..

esse campo trata-se de uma tarja magnetica, do tipo byte codificado em base64.
Porem eu estou colando na mao a informação para testar e não estou convertendo.
Acredito qeu eu preciso colocar no xml a informação codificada, e depois converter aqui.

Acredito qeu possa ser isso.

Estou testando aqui .
junior_salzano

JavaC Membro

Membro desde: 22/01/2018 11:13:34
Mensagens: 56
Offline

Fala galera
Bom dia,

Valeu demais pela força ae !!!

Demorei para postar o retorno aqui,
mais eu consegui solucionar o problema.

Como era uma tag nova no xml, eu coloquei na mão para testar, e acabou passando despercebido que eu teria que passar a informação codificada em base64.

Então no xml essa tag em em base64,
No java ao ler essa informação e atribuo para uma variavel byte fazendo o encode, depois eu decodifico e transformo em uma string.
Ae deu certinho!!

Top demais

Valeu pela força!

Abraço galera!
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.9 © JForum Team