2016-12-23 3 views
0

私はjsonデータを受信して​​いますが、このエラーが発生しましたが、私は解決できません。ボレーのキャッシュを使用するとシンボルcacheEntry.lastModifiedを解決できません

これは私がすべての輸入品不足しているわけではないと思うのOnCreate

RequestQueue queue = Volley.newRequestQueue(this); 
    CacheRequest cacheRequest = new CacheRequest(0, urlJsonArry, new Response.Listener<NetworkResponse>() { 
     @Override 
     public void onResponse(NetworkResponse response) { 
      try { 
       final String jsonString = new String(response.data, 
         HttpHeaderParser.parseCharset(response.headers)); 
       JSONObject jsonObject = new JSONObject(jsonString); 
       textView.setText(jsonObject.toString(5)); 
       Toast.makeText(mContext, "onResponse:\n\n" + jsonObject.toString(), Toast.LENGTH_SHORT).show(); 
      } catch (UnsupportedEncodingException | JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(mContext, "onErrorResponse:\n\n" + error.toString(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    // Add the request to the RequestQueue. 
    queue.add(cacheRequest); 

とエラーが

private class CacheRequest extends Request<NetworkResponse> { 
    private final Response.Listener<NetworkResponse> mListener; 
    private final Response.ErrorListener mErrorListener; 

    public CacheRequest(int method, String url, Response.Listener<NetworkResponse> listener, Response.ErrorListener errorListener) { 
     super(method, url, errorListener); 
     this.mListener = listener; 
     this.mErrorListener = errorListener; 
    } 


    @Override 
    protected Response<NetworkResponse> parseNetworkResponse(NetworkResponse response) { 
     Cache.Entry cacheEntry = HttpHeaderParser.parseCacheHeaders(response); 
     if (cacheEntry == null) { 
      cacheEntry = new Cache.Entry(); 
     } 
     final long cacheHitButRefreshed = 3 * 60 * 1000; // in 3 minutes cache will be hit, but also refreshed on background 
     final long cacheExpired = 24 * 60 * 60 * 1000; // in 24 hours this cache entry expires completely 
     long now = System.currentTimeMillis(); 
     final long softExpire = now + cacheHitButRefreshed; 
     final long ttl = now + cacheExpired; 
     cacheEntry.data = response.data; 
     cacheEntry.softTtl = softExpire; 
     cacheEntry.ttl = ttl; 
     String headerValue; 
     headerValue = response.headers.get("Date"); 
     if (headerValue != null) { 
      cacheEntry.serverDate = HttpHeaderParser.parseDateAsEpoch(headerValue); 
     } 
     headerValue = response.headers.get("Last-Modified"); 
     if (headerValue != null) { 

      /** MY ERROR IS HERE**/ 

      cacheEntry.lastModified = HttpHeaderParser.parseDateAsEpoch(headerValue); 

      /**up**/ 
     } 
     cacheEntry.responseHeaders = response.headers; 
     return Response.success(response, cacheEntry); 
    } 

    @Override 
    protected void deliverResponse(NetworkResponse response) { 
     mListener.onResponse(response); 
    } 

    @Override 
    protected VolleyError parseNetworkError(VolleyError volleyError) { 
     return super.parseNetworkError(volleyError); 
    } 

    @Override 
    public void deliverError(VolleyError error) { 
     mErrorListener.onErrorResponse(error); 
    } 
} 

あるコードに私のコードです - 任意の提案を?

+0

エラーログを追加できますか? –

+0

@GürtuğGüngörコードはエラーでコンパイルできません。 http://stackoverflow.com/questions/31897189/android-setup-volley-to-use-from-cache/32022946を確認してください – Lucem

答えて

0

cacheEntry.lastModified = HttpHeaderParser.parseDateAsEpoch(headerValue);が未定義の場合は、最後のバージョンのvolleyを使用してください。古いバレーのcompile files('libs/httpmime-4.3.jar')がどこにもないか確認してください。はいの場合、それを取り外して、あなたのgradleで置き換えてください

dependencies { 
    ... 
    compile 'com.android.volley:volley:1.0.0' 
} 
関連する問題