【问题标题】:NullPointerException : Attempt to read from field 'com.android.volley.Cache$Entry com.android.volley.Response.cacheEntryNullPointerException:尝试从字段 'com.android.volley.Cache$Entry com.android.volley.Response.cacheEntry 读取
【发布时间】:2015-04-16 21:00:20
【问题描述】:

我正在使用 Android Volley 从外部 API 获取 JSONArray。我的代码如下

StringRequest jq = new StringRequest("http://api.example.com/json/States", new Response.Listener<String>() {

        @Override
        public void onResponse(String jsonArray) {
            try {
                Log.d("Success", jsonArray.toString());
            } catch (Exception je) {
                je.printStackTrace();
            }
        }

    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError volleyError) {
            Log.d("Error", volleyError.toString());
        }
    }) {
        @Override
        protected Response parseNetworkResponse(NetworkResponse networkResponse) {
            return null;
        }
    };
    AppController a = AppController.getInstance();
    Log.d("Queue", "Add");
    a.addToRequestQueue(jq);

我总是在下面遇到同样的错误

NetworkDispatcher.run:未处理的异常 java.lang.NullPointerException:尝试从空对象引用上的字段“com.android.volley.Cache$Entry com.android.volley.Response.cacheEntry”读取 java.lang.NullPointerException:尝试从空对象引用上的字段“com.android.volley.Cache$Entry com.android.volley.Response.cacheEntry”读取 在 com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:126)

我尝试了各种方法。但仍然有同样的问题。我无法理解问题出在哪里。帮助解决这个问题

【问题讨论】:

  • 你找到解决方案了吗?
  • 不完全是。现在我将我的代码从 StringRequest 更改为新的 JsonArrayRequest 及其工作。

标签: java android json api android-volley


【解决方案1】:

您没有解析响应。您只返回 null 而不是解析缓存标头。解析响应后,您可以返回带有缓存头解析的响应,如下所示:

return Response.success(networkResponse, HttpHeaderParser.parseCacheHeaders(networkResponse));

在 parseNetworkResponse(NetworkResponse networkResponse) 方法中返回这个

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多