零网络响应的Volley Server错误

每次我尝试使用Volley的POST方法时,都会出现严重错误。 我在getCause中得到null值,在getNetworkResponse.toString()中得到一些默认值。

如果我使用GET方法,这工作正常(我从我的url得到回复)。

任何人都可以帮我做什么?

Map jsonParams = new HashMap(); jsonParams.put("teststr", "abd"); RequestQueue requestQueue = VolleySingleton.getInstance().getRequestQueue(); JsonObjectRequest request = new JsonObjectRequest( Request.Method.POST, url, new JSONObject(jsonParams), new Response.Listener() { @Override public void onResponse(JSONObject response) { try { Toast.makeText(getApplicationContext(), "Success"+response.toString(), Toast.LENGTH_LONG).show(); }catch(Exception e){ Toast.makeText(getApplicationContext(), "JSON ERROR", Toast.LENGTH_LONG).show(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.d("abd", "Error: " + error + ">>" + error.networkResponse.statusCode + ">>" + error.networkResponse.data + ">>" + error.getCause() + ">>" + error.getMessage()); } }) { @Override protected Map getParams() { HashMap params = new HashMap(); params.put("key", "value"); return params; } @Override public Map getHeaders() throws AuthFailureError { HashMap headers = new HashMap(); headers.put("Content-Type", "application/json; charset=utf-8"); return headers; } }; requestQueue.add(request); 

错误日志:

错误:错误:com.android.volley.ServerError >> 404 >> [B @ 42b1e0d0 >> null >> null

更新: networkResponse.statusCode是404,虽然url是可访问的(如果我只使用GET方法则返回数据)。 如果我在POST方法中删除标题部分,仍然是相同的。

url:

  

首先,尝试确保您的服务器运行良好。 您可以使用Postman(chrome插件)或任何其他方式向url发送post请求并查看其响应内容。

确保您的服务器没有问题后,让我们用排球解决问题。

使用POST方法时, JsonObjectRequest存在一些问题。 像这样Volley JsonObjectRequest Post请求不起作用 。

我建议你首先使用StringRequest并像之前一样覆盖getParams方法。 在您完成此任务后,您可以尝试编写自己的请求,这不是非常困难但非常有用。

我还建议在requestQueue.add(request);之前添加request.setShouldCache(false) requestQueue.add(request); 。 默认情况下,volley将响应保存在其缓存中,这种行为可能会导致一些奇怪的问题。

好吧,我想你可以先在logcat中打印responseCode

在添加到队列之前添加此代码

request.setRetryPolicy(new DefaultRetryPolicy(0,-1,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

有时,请求在你的php完全执行之前超时。 所以试试这个代码。 也许可以帮忙

Volley不能完美处理内置的POST方法参数,因此您需要创建自定义响应。

答案由katwal-Dipak在其他类似的post上发布。 https://stackoverflow.com/a/31532955/4969957

哪个工作得很完美。谢谢。

也许这与你的运营商有关……

我有同样的问题发送JasonObject与Volley。

我在9-10台设备上用两个不同的操作员测试了我的应用。

一个操作符上的请求返回一个错误,其中包含所有null或空白数据,另一个操作符一切正常,我从API成功获得响应。

我不知道运营商会做什么导致这个问题…也许他们使用某种阻止发送JsonObject的防火墙。