2012-03-06 193 views
0

我发送一个用户名和密码到一个网站进行身份验证的目的,毕竟说完了,我已经从服务器检索结果,我已经把结果放在一个变量'响应'至此,一切工作正常如果语句没有返回结果

response = sb.toString(); 
Toast.makeText(this,"Returned Value: "+ response,0).show(); 

上面Toast中看到的值是php脚本返回的值。我使用了有效用户和无效用户,上面显示的Toast显示了服务器返回的正确值(即“Good Login”或“Login Failed”)。我想测试这些结果,所以我可以“if”语句

if("Good Login".equals(response)){ 
Toast.makeText(this, "Registered User" + mUsername, 0).show(); 
} 
if("Login Failed".equals(response)){ 
Toast.makeText(this, "Sorry You're Not A Registered Subscriber",0).show(); 
} 

我从任何一个得到什么启动相应的活动,所以我已经把一些测试。 我也试着

if(response.equals("Good Login")){ 
Toast.makeText(this, "Registered User" + mUsername, 0).show(); 
} 
if(response.equals("Login Failed")){ 
Toast.makeText(this, "Sorry You're Not A Registered Subscriber",0).show(); 
} 

具有相同的结果。不知道还有什么要测试。有没有更好的方法来测试成功或失败?

由于

+1

您是否调试过您的代码以查看返回时的**响应**? – bschultz 2012-03-06 20:49:50

+1

您是否尝试过检查响应的实际值?它是“好登录”还是“登录失败”之一?它可能是一个未修剪的字符串?如“好登录”或“登录失败”? – 2012-03-06 20:49:52

+0

这可能是一个编码问题,看看这个问题:http://stackoverflow.com/questions/4210713/equal-and-equalsignorecase-return-false-for-equal-strings – MByD 2012-03-06 20:50:13

回答

2

调试(或打印)的变量response的精确值。

很可能有空格,所以你可能需要有response = response.trim()

+0

这是修剪(),一旦我修剪它,一切正常 谢谢 – Hank 2012-03-06 20:55:18

+0

@Hank好。请记住将答案标记为已接受。还记得调试你的程序,如果他们不工作;) – Bozho 2012-03-06 21:02:55

+0

@Hank - 当你输出像你的Toast.makeText(this,“返回值:”+响应,0).show();'它有助于用一些东西围绕输出字符串 - 我使用方括号 - 'Toast.makeText(this,“Returned Value:[”+ response +“]”,0).show();'然后你会看到前导和尾随空白。 – 2012-03-07 01:02:47

0
  1. 我将返回一个整数错误代码,而不是一些字符串来检查错误响应。
  2. 确保你返回正确的情况下,否则使用equalsIgnoreCase
0

java字符串处理函数等于完全的情况下/间距比较敏感。

所以如果:response = "Good Login "或者它包含额外空格或非打印字符,那么它将通过测试。

这将是一个好主意,去除所有的空白,甚至是内部的空白。 Here's关于这么做的SO问题。在进行实际比较时也使用String.equalsCaseInsesitive()