如何修复android studio中的com.android.volley.ClientError

问题描述 投票:0回答:2

当我单击登录按钮时,会出现该警报,我使用 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
2个回答
0
投票

尝试调试并查看

public void onErrorResponse(VolleyError arg0)
中的arg0是否包含任何有用的信息。或者您可以尝试记录错误响应正文,如下所示:https://stackoverflow.com/a/30722575/5148282


0
投票

也许会对你有帮助

fun onErrorResponse(error: VolleyError?) {
        if (error == null || error.networkResponse == null) {
            return
        }
        val body: String
        //get status code here
        val statusCode: String = java.lang.String.valueOf(error.networkResponse.statusCode)
        //get response body and parse with appropriate encoding
        try {
            val UTF_8: Charset = Charset.forName("UTF-8")
            body = String(error.networkResponse.data, UTF_8)
        } catch (e: UnsupportedEncodingException) {
            // exception
        }

        //do stuff with the body
    }
© www.soinside.com 2019 - 2024. All rights reserved.