我尝试登录我的应用程序,当我尝试使用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);
}
我看到了很多例子,但我没有得到任何解决方案。
答案 0 :(得分:5)
以下方法
public void onErrorResponse(VolleyError error)
添加以下行: -
error.printStackTrace()
您将获得所有堆栈跟踪,它会为您提供实际错误。我也得到了这个错误但在我的情况下它实际上是TimeoutException。
答案 1 :(得分:5)
我有同样的问题。它耗尽了我整整一天。最后,我发现了一个小错误,即我在参数中传递了一个空值。
检查是否在getParams()或JSON对象中将空值传递给服务器。如果是,那可能是问题所在。
答案 2 :(得分:3)
响应代码400表示错误请求。
有些原因。
答案 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”方法才能发出请求。