Pessoal boa noite a todos
estou utilizando o meu celular pra testar minha aplicação de TCC (Monografia)
o problema é o seguinte:
no simulador, td acontece bonitinho, mas no celular…
tipo, vou fazer o login, se o login existe no banco de dados, beleza
mas se o login não existe no banco de dados, o meu celular encerra a aplicação, pq da um Uncaught exception java/lang/NullPointerException MAS o engraçado é q eu to tratando disso ai no servlet e no midlet e ñ adianta
estou postando o código pra qm puder m ajudar
valeu
[color=darkred]
CÓDIGO DO SERVLET[/color]
[code]
else if ( ( “fazerlogin” ).equals( command ) ) {
// try principal
try {
// obtém informações da sessão
HttpSession session = request.getSession( true );
System.out.println( "\n Session… " + session );
// se for uma sessão nova, reescreva o URL do cliente
if ( session.isNew() ) {
// obtém o URL
String incomingURL = request.getRequestURL().toString();
System.out.println( "\n incomingURL… " + incomingURL );
// codifica e adiciona o ID de sessão no URL
String URLwithID = response.encodeURL(incomingURL);
System.out.println( "\n URLwithID… " + URLwithID );
// devolve um cabeçalho para o cliente, com o novo URL
response.setHeader( “Custom-newURL”, URLwithID );
System.out.println( "\n URLwithID… " + URLwithID );
}// fecha o if
// lê a string login que vem do cliente
String login = dis.readUTF();
// escreve no console a string login que veio do cliente
System.out.println( "\n String login recebida… " + login );
ps = this.con.prepareStatement(sqla);
System.out.println( "\n prepare statement… " + sqla );
ps.setString( 1, login );
System.out.println( "\n String login para consulta… " + login );
rs = ps.executeQuery();
System.out.println( "\n ps… " + ps );
if ( login != null) {
System.out.println( “\n if login < > null --> String login tem o valor… " + login );
while ( rs.next() ) {
System.out.println( “\n Entrei no while” );
// imprime no console o resultado da busca
System.out.println(”| Login: " + rs.getString(“login”) + " | Senha: " + rs.getString(“senha”));
// salva nas variáveis o resultado da pesquisa
loginResult = rs.getString(“login”);
senhaResult = “” + rs.getString(“senha”);
}// fecha o while
if ( ( loginResult ).equals( login ) ) {
System.out.println( "\n if loginResult < > null --> String loginResult tem o valor… " + loginResult );
// retorna para o cliente o resultado da busca
response.setContentType(“text/plain”);
dos.writeUTF(loginResult);
dos.writeUTF(senhaResult);
System.out.println( "| Enviando loginResult: " + loginResult + " | Enviando senhaResult: " + senhaResult );
dos.flush(); // força o envio para o cliente
dis.close(); // fecha a entrada de dados
dos.close(); // fecha a saída de dados
} else if ( loginResult != login ) {
System.out.println( "\n if loginResult == null --> String loginResult tem o valor… " + loginResult );
// retorna para o cliente o resultado da busca
response.setContentType(“text/plain”);
loginResult = “vazio”;
senhaResult = “vazio”;
dos.writeUTF(loginResult);
dos.writeUTF(senhaResult);
System.out.println( "| Enviando loginResult: " + loginResult + " | Enviando senhaResult: " + senhaResult );
dos.flush(); // força o envio para o cliente
dis.close(); // fecha a entrada de dados
dos.close(); // fecha a saída de dados
}
}
}
//abre o catch principal
catch (Exception ex) {
// imprime no console
System.out.println( “\n Passei no catch principal” );
System.out.println( "\n Foi encontrado o seguinte erro… " + ex.getMessage());
//ex.printStackTrace();
}// fecha o catch principal
loginResult = null;
senhaResult = null;
}// fecha o if principal[/code]
CÓDIGO DA MIDLET
private class ThreadHttpConnection extends Thread{
public String url = "http://localhost:8084/Servidor/ServletSAP?command=fazerlogin";
public void run() {
HttpConnection http = null;
try {
http = (HttpConnection)Connector.open(url, Connector.READ_WRITE);
http.setRequestProperty("User-Agent", "Profile/MIDP-2.0 , Configuration/CLDC-1.0");
http.setRequestProperty("Content-Language", "en-US");
http.setRequestMethod(HttpConnection.POST);
dos = http.openDataOutputStream();
dos.writeUTF(login.trim());
dos.flush();
System.out.println( "\n Enviando String url: " + url );
System.out.println( "\n Enviando a String login ( " + login + " ) Conectando com o servidor para buscar login " );
} catch (IOException ex) {
System.out.println( "\n Passei no catch Envia ao Servidor..." + ex.toString() + " \n " );
showAlert( " \n Foi encontrado o seguinte erro...\n" + ex.getMessage() + " \n " );
getDisplay().setCurrent(get_alert1(), get_formPrincipal());
//ex.printStackTrace();
}
try {
dis = http.openDataInputStream();
System.out.println( "\n Passei no try open data input stream..." );
} catch (IOException ex) {
System.out.println( "\n Passei no catch open data input stream..." + ex.toString() + " \n " );
//ex.printStackTrace();
}
try {
String URLwithID = http.getHeaderField("Custom-newURL");
System.out.println( "\n URLwithID: " + URLwithID );
//se o cabeçalho possui um URL reescrito, então:
if(URLwithID != null) {
url = URLwithID; //atualiza o URL para todos os pedidos futuros da servlet
System.out.println( "\n Url: " + url );
}
} catch (IOException ex) {
System.out.println( "\n Passei no catch Reescrita de URL..." + ex.toString() + " \n " );
showAlert( " \n Foi encontrado o seguinte erro...\n" + ex.getMessage() + " \n " );
getDisplay().setCurrent(get_alert1(), get_formPrincipal());
//ex.printStackTrace();
}
try {
loginResult = dis.readUTF();
System.out.println( "\n String loginResult tem o valor ..." + loginResult );
if ( ( "vazio" ).equals( loginResult )){
System.out.println( "\n if loginResult == vazio --> String loginResult tem o valor... " + loginResult );
showAlert( "\n \n");
getDisplay().setCurrent(get_alert1(), get_formPrincipal());
} else if ( loginResult != "vazio") {
try {
System.out.println( "\n if loginResult != vazio --> String loginResult tem o valor... " + loginResult );
//loginResult = dis.readUTF();
senhaResult = dis.readUTF();
System.out.println( "\n senhaResult recebido : " + senhaResult + " | loginResult recebido: " + loginResult + "\n");
alertResult = new Alert( "\n Seja Bem Vindo(a):\n ","\n Bem Vindo(a): \n " + loginResult, null, AlertType.CONFIRMATION) ;
alertResult.setTimeout(Alert.FOREVER);
getDisplay().setCurrent(alertResult, get_formEscolha());
getDisplay().vibrate(1000);
dos.close();
dis.close();
http.close();
} catch (IOException ex) {
System.out.println( "\n Passei no catch recebe do servidor..." + ex.toString() );
}
}
} catch (IOException ex) {
System.out.println( "\n Passei no catch login result..." + ex.toString() );
//ex.printStackTrace();
}
}
}[/code]
Para Facilitar, estou pondo a saída do midlet
[u]
[b]SAÍDA DO MIDELT NO MIDWAY[/b][/u]
[code] Enviando String url: http://localhost:8084/Servidor/ServletSAP?command=fazerlogin
Enviando a String login ( a ) Conectando com o servidor para buscar login
Passei no try open data input stream...
URLwithID: http://localhost:8084/Servidor/ServletSAP;jsessionid=18E980C4D26AE01E71754FE61478132F
Url: http://localhost:8084/Servidor/ServletSAP;jsessionid=18E980C4D26AE01E71754FE61478132F
String loginResult tem o valor ...vazio
if loginResult == vazio --> String loginResult tem o valor... vazio
VB: inside JkDeviceStartVibration()
AMS: AMS_MSG_MESSAGE_SENT, 533903, 302062940
Uncaught exception java/lang/NullPointerException
ALERT: uncaught Exception found