Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查字符串在Android/Java中是否等于_Java_Android - Fatal编程技术网

检查字符串在Android/Java中是否等于

检查字符串在Android/Java中是否等于,java,android,Java,Android,我有一个Android应用程序。我正在尝试向我的Web服务器发出请求,并从服务器检索响应。它似乎起作用了。现在我正在检查响应是否等于success,equal()函数在一段时间内运行良好,似乎停止了工作 如何正确检查输出是否等于success 这就是我尝试过的: if(LOGIN_AUTH.Login(usr, pwd, token).equals("success")) { // Server returned 'success' toDashboard(); }else {

我有一个Android应用程序。我正在尝试向我的Web服务器发出请求,并从服务器检索响应。它似乎起作用了。现在我正在检查响应是否等于success
equal()
函数在一段时间内运行良好,似乎停止了工作

如何正确检查输出是否等于
success

这就是我尝试过的:

if(LOGIN_AUTH.Login(usr, pwd, token).equals("success")) {
    // Server returned 'success'
    toDashboard();

}else {
    // Server returned something else then 'success'
    Alert("Error", LOGIN_AUTH.Login(usr, pwd, token));
    alert.dismiss();

    EditText password = (EditText) findViewById(R.id.login_ip_password);

    assert password != null;
    password.setText("");
}
我还添加了
.trim()
,因为我发现了这个问题:。我试过那个解决方案,但对我不起作用

Login()
函数中,输出也如下所示:

return postResponse.trim().toString();
由于某种原因,应用程序跳过了检查并触发了
Alert()
函数。此警报向我显示服务器返回了
success
,并且在输出中未找到空格、特殊字符或换行符

尝试记录什么

LOGIN_AUTH.Login(usr, pwd, token)
他回来了。它可能不会返回您认为它返回的内容

然后,最佳做法是将equals条件翻转为:

"success".equals(LOGIN_AUTH.Login(usr, pwd, token))
(避免在响应为null时获取NullPointerException) 或用户Android平台名为TextUtils的类:

TextUtils.equals("success", LOGIN_AUTH.Login(usr, pwd, token))
如果它仍然不工作,请记录服务器响应(如上所述),并将日志发布到某个位置。我会相应地更新我的答案。

也许
。contentEquals()
就是你要找的。
equals(对象o)在任何类型的数据上返回true/false,这取决于内容是否相等

contentEquals(CharacterSequence cs)在且仅当此字符串表示与指定的StringBuffer相同的字符序列时返回true。 您可以在此阅读更多有关差异的信息。

此外,该函数描述得很好。

然后
登录\u AUTH.登录(usr、pwd、token)
不会返回您认为的结果is@Blobonat从服务器接收的“纯文本”。在我的截图中,它返回“成功”。在Android监视器中,我还制作了一个记录器。您要调用
Login()
两次。服务器输出可能发生第二次更改。尝试将返回值存储在字符串中并调试该值。您是否可以尝试
string txt=LOGIN\u AUTH.LOGIN(usr、pwd、token)txt.equals(“success”)
?尝试使用Log.d()检查它返回的内容。我个人认为你的.equals()没有任何问题。正如@Blobonat所说,问题可能发生在请求部分。连接到服务器时出现问题,或者请求仍在另一个线程上运行,您在获取结果之前检查结果。它仍然会向我提供带有错误和消息的AlertDialog
success
post Log.d函数的输出,您在其中记录LOGIN\u AUTH.LOGIN(usr、pwd、token)的参数函数和该函数返回的值。我做了一个测试:首先,我输入了一个错误的密码,
Log.d()
向我显示了输出,在我输入了正确的密码后,
Log.d()
没有显示任何内容。换句话说,如果没有显示任何内容,它就不会触发allIt。这可能是因为它实际上显示了一个空字符串“”。您需要发布Log.d的实际输出,而不仅仅是您的解释,这样我们才能帮助您。代码片段也会很好。注意,出于某种原因,我请求记录原始服务器响应以及解析的响应。很抱歉,如果你不发布我建议的内容,我们将无法为你提供更多帮助。。okhttp3存储了一些缓存,我无法清除此缓存。因为有时它返回
success
,然后在某个时刻返回其他内容。。