【问题标题】:how to fix com.android.volley.ClientError in android studio如何在 android studio 中修复 com.android.volley.ClientError
【发布时间】:2021-03-02 09:45:11
【问题描述】:

当我单击登录按钮时,将显示该警报,我使用 com.android.volley:volley:1.1.1 对于 api,我使用来自 python 的 restframework

这是我的 mainactivity.java 代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    etUsername = (EditText) findViewById(R.id.etUsername);
    etPassword = (EditText) findViewById(R.id.etPassword);
    btnLogin = (Button) findViewById(R.id.btnLogin);
    btnLogin.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View arg0){
            username = etUsername.getText().toString();
            password = etPassword.getText().toString();
            RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
            String urlLogin = "http://10.0.3.2/api/accounts";
            StringRequest stringRequest = new StringRequest(Request.Method.POST, urlLogin, new Response.Listener<String>(){
                @Override
                public void onResponse(String response){
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        boolean validasiLogin = jsonObject.getBoolean("success");
                        Toast.makeText(MainActivity.this, validasiLogin+"", Toast.LENGTH_SHORT).show();
                        if (validasiLogin) {
                            String jsonUsername = jsonObject.getString("username");
                            Toast.makeText(MainActivity.this, "Username : "+jsonUsername, Toast.LENGTH_LONG).show();
                            Intent bukaIntent = new Intent(MainActivity.this, HomeActivity.class);
                            startActivity(bukaIntent);
                        }else {
                            Toast.makeText(MainActivity.this, "Username / Password Salah", Toast.LENGTH_SHORT).show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError arg0){
                    Toast.makeText(MainActivity.this, arg0+"", Toast.LENGTH_SHORT).show();
                }
            }) {
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String, String> params = new HashMap<String, String>();
                    params.put("username", username);
                    params.put("password", password);
                    return params;
                }
            };
            requestQueue.add(stringRequest);
        }
    });
}
}

如何解决?你能证明我的代码有什么问题吗?

【问题讨论】:

    标签: android android-studio android-volley


    【解决方案1】:

    尝试调试并查看public void onErrorResponse(VolleyError arg0) 中的arg0 是否包含任何有用的信息。或者您可以尝试在此处记录错误响应正文:https://stackoverflow.com/a/30722575/5148282

    【讨论】:

    • 现在显示com.google.android.material.button.materialbutton(fe30b5d
    • @Naufal 在此处添加整个堆栈跟踪,这将更有帮助。还要检查清单中的互联网权限。
    • @GvariaPurva 我从运行 E/Surface: getSlotFromBufferLocked: unknown buffer: 0xee8f2460 得到这个消息,顺便说一句我使用的是 android 6.0
    • @Naufal 尝试在 onErrorResponse 上打印堆栈跟踪。添加 error.getMessage() 并在此处发布。首先调试你是否得到错误吐司。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 2021-09-15
    • 2021-11-17
    • 2020-12-19
    • 1970-01-01
    相关资源
    最近更新 更多