当我在Volley中发出请求时,我会收到com.android.volley.ServerError
和响应代码400。
我正在做这样的事情(通用示例代码):
final String param1 = "...";
final String param2 = "...";
// etc.
StringRequest stringRequest = new StringRequest(Request.Method.POST, API_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("PARAM_1", param1);
params.put("PARAM_2",password);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
可能的原因是什么?
8条答案
按热度按时间pkbketx91#
我也有同样的问题。它耗尽了我的一整天。最后,我发现了一个小错误,那就是我在参数中传递了一个null值。
检查是否在getParams()或JSON Object中向服务器传递空值。如果是的话,这可能就是问题所在。
34gzjxbg2#
在下面的方法
添加这一行:-
你会得到所有的堆栈跟踪,它会给你实际的错误。我也得到了这个错误,但在我的情况下,它实际上是TimeoutException。
vof42yt13#
响应代码400表示请求错误。
一些原因。
1.请求方法可能有问题。它是GET还是POST?
im9ewurl4#
您可能还需要告诉您的服务器发送代码为200的响应,凌空检查此代码。
1tuwyuhd5#
此错误的一些可能原因:
1.错误的URL。请检查您的URL是否有任何错误。
1.缺少参数、任何参数具有空值或您缺少任何参数。
1.注意params中定义的Keys,它应该与API的Keys相匹配。
ozxc1zmp6#
这个错误可能意味着BAD REQUEST,请检查您发送的报头。覆盖getHeaders()方法,您可以发送正确的头。
此外,通常WebServices需要application/json头文件,如下所示:
9avjhtql7#
仔细检查你的参数(不应该有空参数)。如果它的确定,然后如果你使用
JSONObjectRequest
然后删除Request.Method.GET
按照新的谷歌政策.of1yzvn48#
我遇到了类似的问题,但后来我意识到我的URL没有使用HTTPS;是HTTP。一旦我切换到HTTPS,它就完美地工作了。请仔细检查,以确保您没有同样的疏忽