Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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 代码赢得';t输入if语句_Android_Okhttp3 - Fatal编程技术网

Android 代码赢得';t输入if语句

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 {

我尝试让我的android项目在登录活动后进入不同的活动,但当我的服务器向我发送成功响应时,我的代码将不会进入允许我的程序切换我的活动的if语句。我使用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();
                    }
                });
            }
        }
如您所见,当服务器的响应为“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个空格…没有帮助…:(