Android 代码赢得';t输入if语句
我尝试让我的android项目在登录活动后进入不同的活动,但当我的服务器向我发送成功响应时,我的代码将不会进入允许我的程序切换我的活动的if语句。我使用okhttp库,到目前为止,与服务器的通信进展顺利,但当我试图输入if语句时,它只是跳出到else。代码如下:Android 代码赢得';t输入if语句,android,okhttp3,Android,Okhttp3,我尝试让我的android项目在登录活动后进入不同的活动,但当我的服务器向我发送成功响应时,我的代码将不会进入允许我的程序切换我的活动的if语句。我使用okhttp库,到目前为止,与服务器的通信进展顺利,但当我试图输入if语句时,它只是跳出到else。代码如下: @Override public void onResponse(@NonNull okhttp3.Call call,@NonNull Response response) throws IOException {
@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();
}
});
}
}
如您所见,当服务器的响应为“success”时,必须输入if语句,但即使我的响应为success,程序也会跳转到else。以下是我在输入允许登录的有效Json数据时得到的日志:
编辑:我最初放弃了比较字符串,而是使用issusccessful()方法来查看响应是200还是300 ok,最终结果很好。
无论如何,感谢您帮助检查您的响应字符串的开头或结尾是否有多余的空间。。。该空间可以更改字符串值 试着这样做:
String string = response.body().toString().replaceAll("\\s","");
使用以下命令:
String string = response.body().toString().trim();
这将删除不必要的空间,这可能是错误的原因 我认为没有必要像这样使用runOnUiThread方法
if (string.equals("success")){
Log.d("TAG", "success");
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
什么是
response.body().toString().length()
?长度?我在任何地方都看不到…不,我的意思是请更改代码以记录值。(如果是!=7,那么可能您在响应中得到了一些空格)OMG respone长度是47…那么我想您知道该怎么做:)我可以知道这个函数的作用吗?您的响应中除了空格还有其他字符吗?告诉网站,以便我可以提出请求!不,视觉上只有7个字符,我不明白为什么它又给我增加了40个空格…没有帮助…:(