Volley Android, cómo pasar post parámetros de forma dinámica

Soy nuevo en la biblioteca de Google Volley (y también en Android), ¡y estoy tratando de pasar argumentos POST de una manera dinámica!

Por ahora estoy sobrevalorando el método: getParams (): Y devolver los parámetros de una manera codificada.

@Override protected Map<String, String> getParams() { Map<String, String> params = new HashMap<String, String>(); params.put("login", "my_login"); params.put("password", "my_password"); return params; } 

Me gustaría pasar las variables en lugar de cadenas "codificadas".

Primero traté de poner mi mapa de params como miembro de mi clase, pero los miembros de la clase no están disponibles en el método getParams ().

Tal vez podría utilizar una clase singleton a la que podría dar los parámetros que quiero pasar y volver a usar su instancia en el método getParams ()? Pero no creo que sea la manera correcta.

A continuación se muestra el código del agujero de la solicitud de mi Volley:

 RequestQueue queue = VolleySingleton.getInstance().getRequestQueue(); String url = "https://theUrlToRequest"; StringRequest postRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String response) { JSONObject mainObject = null; try { Log.i("app", "Result = " + response); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.i("app", "Fail on Login" + error.toString()); } } ) { @Override protected Map<String, String> getParams() { Map<String, String> params = new HashMap<String, String>(); params.put("login", "my_login"); params.put("password", "my_password"); return params; } }; queue.add(postRequest); 

En ese caso, puede crear una clase extends StringRequest. Agregue un attr para almacenar params y devuélvalo en getParams ();

 MyStringRequest extends StringRequest{ private Map params = new HashMap(); public MyStringRequest (Map params,int mehotd,String url,Listener listenr,ErrorListener errorListenr){ super(mehotd,url,listenr,errorListenr) this.params = params } @Override protected Map<String, String> getParams(){ return params; } } RequestQueue queue = VolleySingleton.getInstance().getRequestQueue(); String url = "https://theUrlToRequest"; Map<String, String> params = new HashMap<String, String>(); params.put("login", "my_login"); params.put("password", "my_password"); MyStringRequest postRequest = new MyStringRequest (params ,Request.Method.POST, url, new Response.Listener<String>(){ }, new Response.ErrorListener(){ } ); queue.add(postRequest); 
Interesting Posts
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.