Problema no Envio de Arquivo para Servidor WEB  XML
Índice dos Fóruns » Google Android e Java Micro Edition (ME)
Autor Mensagem
eduardodutragoncalves
Entusiasta Java

Membro desde: 03/08/2006 09:54:38
Mensagens: 23
Offline

Pessoal, boa noite!

Estou fazendo uma aplicação em JavaME, e estou tendo alguns problema na recepção dos dados.
O Método abaixo cria o cabeçalho da URL que envio para o servidor. Reparem que o parâmetro que este recebe
é uma arquivo de imagem.
Quando eu coloco no parâmetro file uma String simples, o meu servlet recebe os parâmetros sem problema
e consigo recuperar o conteúdo de cada um destes parâmetros, porém se eu passo dessa forma, tranformando o meu
array de bytes numa String usando o base64.encode o servlet simplesmente desaparece com os parâmetros, ou seja,
não consigo recuperar com o request.

Pensei em duas possibilidades:
1) O Método POST está com alguma restrição de tamanho, o que nunca ouvi dizer que houvesse este problema(Diferente do GET);
2) O OutputStream está estourando, pois como estão vendo no código abaixo existe uma conversão do conteúdo do arquivo para String para que seja
enviado via Stream de saída.

Estou usando o GlassFish e inclusive já alterei algumas configurações do servidor acreditando ser algum parâmetro setado como default,
mas nada adiantou!

No mobile não dá erro algum! O aplicativo inclusive usa depois um método comum de conexão que é compartilhado pela
aplicação toda e funciona sem problemas.



Agradeço se tiverem como ajudar de alguma forma!
eduardodutragoncalves
Entusiasta Java

Membro desde: 03/08/2006 09:54:38
Mensagens: 23
Offline

Depois de uma noite em claro, consegui resolver o problema e gostaria de compartilhar com vocês, pois vi muitos foruns espalhados por aí, onde os desenvolvedores tinham o mesmo problema porém ninguém com uma explicação aceitável.

Reparem que no método acima, existe uma conversão da String para Base64, e é claro que como em todo método de envio de dados usando POST convencionalmente
eu estava usando o Content-Lenght, para definir o tamanho da informação que passaria pelo canal de comunicação e também usava o OutputStream.write();

O problema está aí.
Quando você diz que vai passar o conteúdo daquele String e após ela ter sido convertida, a informação do tamanho não é real, pois na verdade o que vai na String
é a conversão dos bytes do seu arquivo.

Solução:
- Basta ao invés de chamar o método write(MinhaStringDecodificadacomArquivo), usar um for que leia byte a byte write(byte[i]) e escreva no canal de comunicação, sem se preocupar com o tamanho da String.

Espero que esta experiência ajude alguém um dia!



 
Índice dos Fóruns » Google Android e Java Micro Edition (ME)
Ir para:   
Powered by JForum 2.1.8 © JForum Team