android – Volley Server Error null null网络响应

前端之家收集整理的这篇文章主要介绍了android – Volley Server Error null null网络响应前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
每次我尝试使用Volley的POST方法时,都会出现严重错误.我在getCause中得到null值,在getNetworkResponse.toString()中得到一些默认值.

如果我使用GET方法,这工作正常(我从我的网址得到回复).@H_502_3@

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

Map<String,String> jsonParams = new HashMap<String,String>();
    jsonParams.put("teststr","abd");

    RequestQueue requestQueue = VolleySingleton.getInstance().getRequestQueue();
    JsonObjectRequest request = new JsonObjectRequest(
            Request.Method.POST,url,new JSONObject(jsonParams),new Response.Listener<JSONObject>() {
                @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<String,String> getParams() {
                    HashMap<String,String> params = new HashMap<String,String>();
                    params.put("key","value");
                    return params;
                }

                @Override
                public Map<String,String> getHeaders() throws AuthFailureError {
                    HashMap<String,String> headers = new HashMap<String,String>();
                    headers.put("Content-Type","application/json; charset=utf-8");
                    return headers;
                }
    };
    requestQueue.add(request);

错误日志:@H_502_3@

Error:
Error: com.android.volley.ServerError>>404>>[B@42b1e0d0>>null>>null@H_502_3@

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

网址:@H_502_3@

<?PHP
    $response = array();

    $jsonString = file_get_contents('PHP://input');
    $jsonObj = json_decode($jsonString,true);

    if(!isset($jsonObj['teststr'])){
        $response["msg"] = "No data.";
    }else{
        $response["msg"] = "Success: ".$jsonObj['teststr'];
    }
    echo json_encode($response);
?>

解决方法

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

在确保您的服务器没有问题之后,让我们用排球来解决问题.@H_502_3@

使用POST方法时,JsonObjectRequest存在一些问题.
像这样Volley JsonObjectRequest Post request not working.@H_502_3@

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

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

猜你在找的Android相关文章