Volley no enviar una solicitud de post con los parámetros.

Tengo el código de abajo (Volley Library By Google) para enviar una solicitud POST a mi servidor php y obtener información como resultado. He probado el código sin comprobar isset($_POST['id']) en php y el código funcionó bien. Comprar cuando comencé a comprobar, php saltará la instrucción if e ir a lo que significa que el código no está enviando los params correctamente. ¿Cómo puedo arreglar esto?

 RequestQueue queue = Volley.newRequestQueue(Chat.this); JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST, CHAT_URL_FEED, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d("THISSSSSSSS", response.toString()); if (response != null) { parseChatJsonFeed(response); } } }, new Response.ErrorListener(){ @Override public void onErrorResponse(VolleyError error){ VolleyLog.d("Here", "Error: " + error.getMessage()); } }) { @Override protected Map<String, String> getParams() { Map<String, String> params = new HashMap<String, String>(); params.put("id", id); return params; } }; queue.add(jsonObjReq); 

También intenté el código siguiente:

 RequestQueue queue = Volley.newRequestQueue(Chat.this); JSONObject params = new JSONObject(); try { params.put("id", id); } catch (JSONException e) { e.printStackTrace(); } JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST, CHAT_URL_FEED, params, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d("THISSSSSSSS", response.toString()); if (response != null) { parseChatJsonFeed(response); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d("Here", "Error: " + error.getMessage()); } }); queue.add(jsonObjReq); 

pero todavía obtengo el mismo resultado.

Después de pasar un poco más de tiempo buscando en este problema, me enteré de que Volley no funciona correctamente con la solicitud JSON con solicitudes POST. El usuario @SMR sugirió que en la sección de comentarios de mi pregunta. También vi respuestas similares en los grupos de Google y el repo mian en git. Terminé usando GET solicitudes para pasar la información al servidor y recuperar un feed de JSON.

 StringRequest postRequest = new StringRequest(Request.Method.POST, CHAT_URL_FEED, new Response.Listener<String>() { @Override public void onResponse(String response) { // response Log.d("THISSSSSSSS", response.toString()); if (response != null) { parseChatJsonFeed(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // error VolleyLog.d("Here", "Error: " + error.getMessage()); } } ) { @Override protected Map<String, String> getParams() { Map<String, String> params = new HashMap<String, String>(); params.put("id", id); return params; } }; 

Volley no admite parámetros cuando su solicitud para JSONObject. puede obtener respuesta como JSON String y puede convertir de nuevo a JSON utilizando la clase JSONObject.

Para enviar la solicitud POST puede escribir la clase de solicitud personalizada que basado en JsonRequest clase PS que uso de esta manera en mi biblioteca (basado en Volley)

También puede enviar una petición de cadena (JSON) como un POST como se muestra a continuación.

  RequestQueue queue = Volley.newRequestQueue(getApplicationContext()); String requestStr = "{\n" + "\"id\": \"your JSON\"\n" + "}\n"; JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST,"http://<Your url>", requestStr,new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { //Your Logic on Success } },new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { //Your Logic on Error } }); queue.add(request); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.