我尝试在登录登录活动后让我的android项目进入不同的活动,但是当我的服务器向我发送成功的响应时,我的代码不会输入我的if语句,允许我的程序切换我的activity.I使用okhttp库,到目前为止与服务器的通信进展顺利,但是当我尝试输入我的if语句时,它只是跳转到else。这是代码:
@Override
public void onResponse(@NonNull okhttp3.Call call,@NonNull Response response) throws IOException {
if (response.isSuccessful()){
Log.d("TAG", "success logging in!");
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
else{
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e("TAG", "Can't log in");
spinner.setVisibility(View.INVISIBLE);
Toast.makeText(MainActivity.this, "Can't log in, consider registering...",Toast.LENGTH_LONG).show();
}
});
}
}
正如您所看到的,当我的服务器响应是"成功"时,我的if语句必须输入。但即使我的回答是成功的,程序也会跳转到其他地方。这是输入有效Json数据以获取登录时得到的日志:http://prntscr.com/i1ba9q
编辑:我最初放弃了比较字符串,而是使用isSuccessful()方法来查看响应是200还是300,最终它运行良好。 无论如何,谢谢你的帮助
答案 0 :(得分:1)
使用此功能:
String string = response.body().toString().trim();
这将删除可能导致错误的不必要空间!
答案 1 :(得分:0)
检查您的响应字符串在开始或结束时是否有额外的空间...该空格可以更改字符串值。
尝试这样的事情:
String string = response.body().toString().replaceAll("\\s","");
答案 2 :(得分:0)
我认为没有必要使用runOnUiThread方法,你可以像这样使用
if (string.equals("success")){
Log.d("TAG", "success");
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}