Bom dia gente, estou presenciando um caso curioso aqui no celular, fiz o seguinte fiz um consulta num BD externo e que passa um parâmetro cpf por GET e me retorna as informações do usuário desta forma.
“1|Nome do cara|Masculino|07/09/1999” > os dados são separados por | , bom é o seguinte, fiz como um tipo de “debug” eu mostrar informações no celular, coloco assim: this.append(retornaConsulta); aí vai escrevendo no celular, um detalhe com a String completa “1|Nome do cara|Masculino|07/09/1999” eu consigo fazer isso thhis.append(retornaConsulta); mas depois que os dados são passados para o StringTokenizer e transformados em um vetor de String não consigo mais mostrar os dados. Vou mostrar a parte do StringTokenizer:
[code]String retornaConsulta = consultaCpf(txtCpf.getString()); // Passa o CPF para o consulta CPF
this.append(retornaConsulta); // Mostra na tela do celular os valores não tratados (funciona aqui)
/*********** Fazendo Tokenizer/Replace ************/
StringTokenizer vetorResposta = new StringTokenizer(
retornaConsulta, '|');
String[] vetor = new String[6];
int x = 0;
char t = ' ';
while (vetorResposta.hasMoreChars()) {
vetor[x] = vetorResposta.nextToken().replace('|', t).trim();
x++;
}
this.append("vetor[0]: "+vetor[0]);
/*********** Fim Tokenizer/Replace ************/
principal.cpfBean.setId(vetor[0]);
principal.cpfBean.setNome(vetor[1]);
principal.cpfBean.setSexo(vetor[2]);
principal.cpfBean.setNascimento(vetor[3]);
principal.cpfBean.setCpf(vetor[4]);
principal.cpfBean.setOcorrencia(vetor[5]);
this.append(retornaConsulta); // Aqui não funciona[/code]
No emulador funciona muito bem!
Mas quando passo pro celular não funciona esta última linha, como se tivesse parado a aplicação! Estou achando que parou de executar no StringTokenizer como faço pra saber isso no celular, pois usando o debug não vai me ajudar já que no emulador funciona corretamente.
Dependendo de como o servidor lhe está enviando, pode fazer ele enviar um DataOutputStream, e no celular use o DataInputStream.
Mas se caso quer continuar a usar sua String com ‘|’ como separador, conselho ou a fazer um split (na mão mesmo), ou usar expressao regularhttp://code.google.com/p/regexp-me/
Para estabelecer comunicação com um dispositivo opte por alguma forma organizada estruturalmente.
XML, JSON.
Utilizar DataOutputStream é interessante, mas acaba sendo grande a manutenção do código, fora que exige um conhecimento profundo do que o servidor está enviando.
Putzzz String, tem uma coisa legal nestas string falante é que se o maldito usuário colocar dentro do texto esse separado usado no parseamente, lasca tudo seu “parse”… então eu corro mais que o cara da são silveste disto (string falante).
Portanto caso tenha tempo ainda de fazer alguma reformulação, opte por destes modo estruturado.
Mais para frente você vai ver a vantagem de usar a plataforma deste jeito.
Para estabelecer comunicação com um dispositivo opte por alguma forma organizada estruturalmente.
XML, JSON.
Utilizar DataOutputStream é interessante, mas acaba sendo grande a manutenção do código, fora que exige um conhecimento profundo do que o servidor está enviando.
Putzzz String, tem uma coisa legal nestas string falante é que se o maldito usuário colocar dentro do texto esse separado usado no parseamente, lasca tudo seu “parse”… então eu corro mais que o cara da são silveste disto (string falante).
Portanto caso tenha tempo ainda de fazer alguma reformulação, opte por destes modo estruturado.
Mais para frente você vai ver a vantagem de usar a plataforma deste jeito.
Obrigado pela ajuda, deixa ver se eu intendi direito.
Meu aplicativo mobile deverá mandar o pedido da busca pro servidor Web e ele por sua vez vai buscar no BD (dados dinâmicos) criar um arquivo XML com estes dados, logo meu celular deverá pegar este XML gerado e trazer os dados pra ele, logo depois o servidor deve apagar o XML?
Estou certo? É realmente interessante fazer isso seja com XML ou JSON para dados não estáticos?