Error de petición de cadena de volea al pasar cadena con valor nulo como param

Estoy utilizando el siguiente código para la solicitud de cadenas en volea

pDialog = new ProgressDialog(context); pDialog.setMessage("Loading..."); pDialog.setCancelable(false); pDialog.show(); StringRequest strReq = new StringRequest(Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String response) { pDialog.dismiss(); Log.e(tag, response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { pDialog.dismiss(); } }) { protected Map<String, String> getParams(){ Map<String, String> params = new HashMap<String, String>(); params.put("tag", "SHOW_FILE"); params.put("filename",filename); return params; }; }; // Adding request to request queue Application.getInstance().addToRequestQueue(strReq, "get_file"); 

Si la variable filename = null, estoy recibiendo el siguiente error:

 08-02 10:28:06.192: E/Volley(2935): [2128] NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException 08-02 10:28:06.192: E/Volley(2935): java.lang.NullPointerException 08-02 10:28:06.192: E/Volley(2935): at libcore.net.UriCodec.encode(UriCodec.java:132) 08-02 10:28:06.192: E/Volley(2935): at java.net.URLEncoder.encode(URLEncoder.java:57) 08-02 10:28:06.192: E/Volley(2935): at com.android.volley.Request.encodeParameters(Request.java:449) 08-02 10:28:06.192: E/Volley(2935): at com.android.volley.Request.getBody(Request.java:435) 08-02 10:28:06.192: E/Volley(2935): at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:236) 08-02 10:28:06.192: E/Volley(2935): at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:210) 08-02 10:28:06.192: E/Volley(2935): at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:106) 08-02 10:28:06.192: E/Volley(2935): at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:93) 08-02 10:28:06.192: E/Volley(2935): at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:110) 

¿Es necesario una comprobación de valor nulo en todos los param I POST o cualquier otro método para resolver este problema y manejar con valor NULL?

Gracias Giru Bhai por tu ayuda

He creado un nuevo método para resolver este problema mientras que la variable se convierte en nulo

  protected Map<String, String> getParams(){ Map<String, String> params = new HashMap<String, String>(); params.put("key1", value1); params.put("key2",value2); params.put("key3",value3); return checkParams(params); }; private Map<String, String> checkParams(Map<String, String> map){ Iterator<Entry<String, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, String> pairs = (Map.Entry<String, String>)it.next(); if(pairs.getValue()==null){ map.put(pairs.getKey(), ""); } } return map; } 

Creo que esto es más fácil que comprobar cada valor antes de ponerlo en el mapa

En Volley Request Class llama encodeParameters método encodeParameters que llama por el método getBody() .

En el método getBody() comprueba todos los params como

  public byte[] getBody() throws AuthFailureError { Map<String, String> params = getParams(); if (params != null && params.size() > 0) { return encodeParameters(params, getParamsEncoding()); } return null; } 

Pero no para los parámetros individuales. Así que usted tiene que comprobar la capacidad de nulo en los parámetros individuales en el método getParams() como

  protected Map<String, String> getParams(){ Map<String, String> params = new HashMap<String, String>(); params.put("tag", "SHOW_FILE"); if(filename != null)params.put("filename",filename); return params; }; 
  • Multi claves primarias en Android SQLite
  • Calendario de Android Java getDisplayName / s devolver null
  • Java vs Objective C en caso de excepción nullpointer
  • La aplicación se bloquea cuando se ejecuta desde el teléfono, pero funciona bien cuando se inicia desde el equipo
  • textView.setText (); accidentes
  • Android: Cómo implementar una galería de imágenes con RecyclerView
  • No puedo cambiar InputType de EditText después de que lo fijé a TYPE_NULL
  • Error al entregar el resultado ResultInfo {who = null, request = 1, result = -1, data = Intent {(tiene extras)}} a actividad; Java.lang.NullPointerException
  • Android BluetoothDevice.getName () return null
  • GetActionView () de mi MenuItem return null
  • Android onActivityResult. La variable miembro es a veces nula
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.