Saltar al contenido

Los parámetros de Volley JsonObjectRequest Post ya no funcionan

Después de investigar con expertos en la materia, programadores de diversas áreas y maestros hemos dado con la solución al problema y la dejamos plasmada en este post.

Solución:

Solo tienes que hacer un JSONObject desde tu HashMap de parámetros:

String url = "https://www.youraddress.com/";

Map params = new HashMap();
params.put("first_param", 1);
params.put("second_param", 2);

JSONObject parameters = new JSONObject(params);

JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, url, parameters, new Response.Listener() 
    @Override
    public void onResponse(JSONObject response) 
        //TODO: handle success
    
, new Response.ErrorListener() 
    @Override
    public void onErrorResponse(VolleyError error) 
        error.printStackTrace();
        //TODO: handle failure
    
);

Volley.newRequestQueue(this).add(jsonRequest);

Terminé usando StringRequest de Volley en su lugar, porque estaba usando demasiado tiempo valioso tratando de hacer que JsonObjectRequest funcionara.

RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://myserveraddress";

StringRequest strRequest = new StringRequest(Request.Method.POST, url,
                new Response.Listener()
                
                    @Override
                    public void onResponse(String response)
                    
                        Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();
                    
                ,
                new Response.ErrorListener()
                
                    @Override
                    public void onErrorResponse(VolleyError error)
                    
                        Toast.makeText(getApplicationContext(), error.toString(), Toast.LENGTH_SHORT).show();
                    
                )
        
            @Override
            protected Map getParams()
            
                Map params = new HashMap();
                params.put("tag", "test");
                return params;
            
        ;

queue.add(strRequest);

Esto funcionó para mí. Es tan simple como JsonObjectRequest, pero usa una cadena en su lugar.

Tuve un problema similar, pero descubrí que el problema no estaba en el lado del cliente, sino en el lado del servidor. Cuando envías un JsonObjectnecesita obtener el objeto POST como este (en el lado del servidor):

En PHP:

$json = json_decode(file_get_contents('php://input'), true);

Te mostramos comentarios y calificaciones

Acuérdate de que tienes la capacidad de aclarar si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *