| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2009 19:59:12
|
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!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/03/2009 14:56:44
|
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!
|
|
|
 |
|
|
|
|