java - 安卓工作室/JAVA : How to trace error at android studio using "log"

标签 java android android-studio debugging

目前,我的代码有问题。错误显示如下

Value br of type java.lang.String cannot be converted to JSONObject

我试图找出我的 PHP 端是否存在问题,但我也不知道如何追踪问题。

因此,我是否可以知道如何使用log 以及我需要将log 放在我的代码中的什么位置?

我希望有人能帮我解决这个问题。谢谢

下面是我当前的代码

public class MainActivity extends AppCompatActivity {

    EditText etBadgeid, etPassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        etBadgeid = findViewById(R.id.etBadgeid);
        etPassword = findViewById(R.id.etPassword);

        findViewById(R.id.btnLogin).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                userLogin();
            }
        });
    }

    private void userLogin() {
        final String badgeid = etBadgeid.getText().toString();
        final String pwd = etPassword.getText().toString();

        class UserLogin extends AsyncTask<Void, Void, String> {

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);

                try {
                    //converting response to json object
                    JSONObject obj = new JSONObject(s);

                    //if no error in response
                    if (!obj.getBoolean("error")) {
                        Toast.makeText(getApplicationContext(), obj.getString("message"), Toast.LENGTH_SHORT).show();

                        //getting the user from the response
                        JSONObject userJson = obj.getJSONObject("user");

                        //creating a new user object
                        User user = new User(
                                            userJson.getString("badgeid"),
                                            userJson.getString("email"),
                                            userJson.getString("fullname"),
                                            userJson.getInt("roles_id"),
                                            userJson.getInt("team_id")
                        );

                        //storing the user in shared preferences
                        SharedPrefManager.getInstance(getApplicationContext()).userLogin(user);

                        //starting the profile activity
                        finish();
                        startActivity(new Intent(getApplicationContext(), Home.class));
                    } else {
                        Toast.makeText(getApplicationContext(), "Invalid username or password", Toast.LENGTH_SHORT).show();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            protected String doInBackground(Void... voids) {
                //creating request handler object
                RequestHandler requestHandler = new RequestHandler();

                //creating request parameters
                HashMap<String, String> params = new HashMap<>();
                params.put("badgeid", badgeid);
                params.put("pwd", pwd);

                //returing the response
                return requestHandler.sendPostRequest(URLs.URL_LOGIN, params);
            }
        }

        UserLogin ul = new UserLogin();
        ul.execute();
    }

    @Override
    public void onBackPressed() {

        finish();
        System.exit(0);
    }
}

最佳答案

在android中你可以使用Log.d(tag,message)登录,你可以在logcat中查看调试信息

你应该在解析响应字符串之前打印日志,

...
@Override
protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Log.d("onPostExecute","response is: "+s); 

                try {
                    //converting response to json object
                    JSONObject obj = new JSONObject(s);
....

您的回复可能是非 json 格式的纯文本。

获取更多信息 https://developer.android.com/reference/android/util/Log.html#d(java.lang.String,%20java.lang.String)

关于java - 安卓工作室/JAVA : How to trace error at android studio using "log",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59297010/

相关文章:

android - 搜索栏不在媒体播放器中滚动

java - MainAcitivity 即使是 SingleTask 也不会进入 onNewIntent 方法并再次调用 onCreate

android - Android Studio Layout Inspector 中的 mID 是什么?

android - 无法解决 Mac 中 Android Studio 中可绘制对象的 XML 引用的符号错误

Java 8 FlatMap - 在嵌套表单中添加项目并使用 FlatMap 检索对象

java - 为什么需要关闭 'finally' 内的文件并仍然将其嵌入到 'try/catch' block 中?

java - 如何使用 Android Studio 从 Firebase 实时数据库中的节点检索特定数据?

android - 在 Jetpack Compose 的文本组件中显示新行

Java:在命令行中,无法找到或加载主类

java - 为什么传递返回变量但也有 println 的参数也会传递 println?