所以我构建了一个Java Web服务来连接到我正在开发的移动Android应用程序。我是Java&的新手Android,我有点困难。我有我的android将登录详细信息发送到Restful Web Service,但是当它试图验证为用户提供的数据库表中的详细信息时,其余的Web服务失败了。我知道这是检查凭证问题,因为当我注释掉支票凭证声明时,它会让我登录。我无法弄清楚我的代码中的凭证验证声明出错了,有人可以提供帮助,这会很棒。我的Restful服务的Login.class如下。此外,我正在运行tomcat7的所有内容。
private boolean checkCredentials(String uname, String pwd){
System.out.println("Inside checkCredentials");
boolean result = false;
if(Utitlity.isNotNull(uname) && Utitlity.isNotNull(pwd)){
try {
result = DBConnection.checkLogin(uname, pwd);
// System.out.println("Inside checkCredentials try "+result);
} catch (Exception e) {
// TODO Auto-generated catch block
// System.out.println("Inside checkCredentials catch");
result = false;
}
}else{
System.out.println("Inside checkCredentials else");
result = false;
}
return result;
}
答案 0 :(得分:0)
您的代码存在一些问题。主要的一点是你处理checkLogin()
中抛出的任何异常只是一个常规的“没有签出”的情况。
您真的想要默默地忽略任何系统故障,并像处理有效的业务案例一样处理它吗?
我并不是说这在每种情况下都是错误的,而是将其作为明确的设计决策,至少记录一些关于异常的信息,这样你就可以看出出现了问题。
更好的是,将catch-clause限制为您真正期望抛出的Exceptions。 (即便如此,记录关于例外的信息!)
DBConnection.checkLogin()
等静态方法的使用表明存在更多设计问题。它可能会起作用,并且在某些情况下很方便,但从长远来看它会咬你。
因此,要找到您当前的问题:在catch子句中打印Exception的堆栈跟踪。同时在调用后记录checkLogin()
调用的结果,仍然在try-block中。如果打印了该信息,则不会抛出异常,并且您的问题位于checkLogin()
。