代码不会输入if语句

时间:2018-01-16 17:49:23

标签: android okhttp3

我尝试在登录登录活动后让我的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,最终它运行良好。 无论如何,谢谢你的帮助

3 个答案:

答案 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);

            }