在volley库中给出com.android.volley.ServerError

时间:2016-10-06 10:37:21

标签: android android-volley

我尝试登录我的应用程序,当我尝试使用volley库调用API时,它会给出com.android.volley.ServerError和响应代码400.

final String username = editTextUsername.getText().toString().trim();
        final String password =   editTextPassword.getText().toString().trim();
        final String email = editTextEmail.getText().toString().trim();

  StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show();
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG).show();
                    }
                }){
            @Override
            protected Map<String,String> getParams(){
                Map<String,String> params = new HashMap<String, String>();
                params.put(KEY_USERNAME,username);
                params.put(KEY_PASSWORD,password);`enter code here`
                params.put(KEY_EMAIL, email);
                return params;
            }

        };

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }    

我看到了很多例子,但我没有得到任何解决方案。

7 个答案:

答案 0 :(得分:5)

以下方法

public void onErrorResponse(VolleyError error)

添加以下行: -

error.printStackTrace()

您将获得所有堆栈跟踪,它会为您提供实际错误。我也得到了这个错误但在我的情况下它实际上是TimeoutException。

答案 1 :(得分:5)

我有同样的问题。它耗尽了我整整一天。最后,我发现了一个小错误,即我在参数中传递了一个空值。

检查是否在getParams()或JSON对象中将空值传递给服务器。如果是,那可能是问题所在。

答案 2 :(得分:3)

响应代码400表示错误请求。

有些原因。

  1. Request方法可能存在问题。是GET还是POST。
  2. API可能需要授权标题。

答案 3 :(得分:1)

什么原因导致此错误... 1.Url错误,请检查您的网址是否有错误。 2.缺少参数,任何参数为空值或您缺少任何参数。 3.注意参数中定义的密钥,它应该与API的密钥相匹配。 希望对您有帮助!

答案 4 :(得分:0)

此错误可能意味着BAD REQUEST,请检查您要发送的标头。通过覆盖getHeaders()方法,您可以发送正确的标题。

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
        return (headers != null || headers.isEmpty()) ? headers : super.getHeaders();
    }

此外,WebServices通常需要application / json标头,如下所示:

headers.put("Accept","application/json");
headers.put("Content-Type","application/json");

答案 5 :(得分:0)

您可能还需要告诉您的服务器发送带有代码 200 的响应,齐射检查此代码。

答案 6 :(得分:-1)

您必须在Java代码和php代码中使用相同的Method。您为带有服务器排球库的请求定义了“ POST”方法,现在您必须在服务器的php文件中具有“ POST”方法才能发出请求。