Volley报NullPointerException
来源:互联网 发布:唱歌下载什么软件 编辑:程序博客网 时间:2024/05/22 08:08
Volley报NullPointerException原因
报错日志如下:
03-11 12:46:09.681 16811-16836/com.ushopal.batman E/Volley: [11762] NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException java.lang.NullPointerException at libcore.net.UriCodec.encode(UriCodec.java:132) at java.net.URLEncoder.encode(URLEncoder.java:57) at com.android.volley.Request.encodeParameters(Request.java:463) at com.android.volley.Request.getBody(Request.java:449) at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:236) at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:210) at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:106) at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96) at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
其实看log的堆栈就知道,volley.Request.getBody一直调用到UriCodec.encode,报了这个错。我们查看这些方法的源代码:
public byte[] getBody() throws AuthFailureError { Map<String, String> params = getParams();//Volley Request提交的params参数 if (params != null && params.size() > 0) { return encodeParameters(params, getParamsEncoding()); } return null; }private byte[] encodeParameters(Map<String, String> params, String paramsEncoding) { StringBuilder encodedParams = new StringBuilder(); try { for (Map.Entry<String, String> entry : params.entrySet()) { encodedParams.append(URLEncoder.encode(entry.getKey(), paramsEncoding)); encodedParams.append('='); encodedParams.append(URLEncoder.encode(entry.getValue(), paramsEncoding)); encodedParams.append('&'); } return encodedParams.toString().getBytes(paramsEncoding); } catch (UnsupportedEncodingException uee) { throw new RuntimeException("Encoding not supported: " + paramsEncoding, uee); }}------URLEncoder.java--------------------public static String encode(String s, String charsetName) throws UnsupportedEncodingException { return ENCODER.encode(s, Charset.forName(charsetName));}
既然是encode报空,很有可能是s为空。这个s是encodeParameters中的entry.getKey()或者entry.getValue();
所以检查你在使用valley请求的时候传递的参数,不管是key或value为空,都会导致这个exception。而且这个exception被捕获,最终通过Response.ErrorListener回调。所以如果你没在回调接口中做相关处理,也很难发现这个问题。
0 0
- Volley报NullPointerException
- Volley报NullPointerException原因
- Volley框架使用报错:NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException
- 启动NameNode报NullPointerException
- recycleview 报 NullPointerException
- .setOnClickListener报错NullPointerException
- dbvisualizer报错,NullPointerException
- ButterKnife 报NullPointerexception
- springMVC报错NullPointerException
- Volley异常Volley NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException
- controller中dao报nullPointerException
- Stacktraces 报 java.lang.NullPointerException
- NameNode不能启动报 NullPointerException
- 导出EXCEL报错:NullPointerException
- excel上传下载报错NullPointerException
- 启动WebLogic报错NullPointerException
- Fragment setText NullPointerException 报异常
- HDFS下载报错NullPointerException
- Segmentation Fault in Linux 原因与避免
- socket程序listen之后,不写accept函数,会是怎样一种情况?
- springMVC No mapping found for HTTP request with URI
- TCP连接问题复习
- 循环链表实现队列
- Volley报NullPointerException
- 近5年133个Java面试问题列表
- base64 编码原理
- ios NSTimer与保留环
- 再次学习AsyncTask的异步加载
- 2016年第2次吐槽小米,系统升级连不上wifi
- android studio导入Eclipse遇到的问题一
- 十大 HTML 5 前端框架
- “懒”出效率是程序员的美德