如何以编程方式清除android中的特定服务的缓存

时间:2015-06-10 11:11:50

标签: android caching http-post offline

我的应用程序从服务器获取数据,通常是通过使用POST方法调用服务或URL,其中参数被添加到URL。为此,我使用了JSONParser类向服务器请求数据,然后以JSON格式获取数据,如下面的代码:

public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    JSONArray jArr = null;
    static String json = "";

    // constructor
    public JSONParser() {

    }

    public JSONArray getJSONFromUrl(String url) {

        // Making HTTP request
        try {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);


            HttpResponse httpResponse = httpClient.execute(httpPost);

            HttpEntity httpEntity = httpResponse.getEntity();

            is = httpEntity.getContent();           

        } catch (UnsupportedEncodingException e) {

        } catch (ClientProtocolException e) {

        } catch (IOException e) {

        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is,  "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
            Log.e("JSON Parser", json );
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            JSONTokener jt = new JSONTokener(json);
            Object rootElement = jt.nextValue();
            if (rootElement instanceof JSONObject) {
               // You got an object from the jresponse
                jObj = new JSONObject(json);
            } else if (rootElement instanceof JSONArray) {
                 jArr = new JSONArray(json);

                 return jArr;
               // You got a JSON array
            }
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        // return JSON String
        return jArr;

    }
}

要调用此类,我使用以下代码:

String njoftime_url = URL[0];

                // Creating JSON Parser instance
                JSONParser jParser = new JSONParser();

                // getting JSON string from URL
                njoftimeInformation = jParser.getJSONFromUrl(njoftime_url);
...................

问题在于,当我第一次拨打该服务时,我收到了一些格式良好的数据,但是当手机与互联网断开连接并拨打电话时,我仍然收到相同的数据,甚至如果手机断开连接。

我的猜测是数据保存在Android程序的缓存中,但有时这会给我错误的数据,例如当我更改参数时:

http://www.server.com/path/service_name.ashx?code=MAKINA_CATEGORY

为:

http://www.server.com/path/service_name.ashx?code=Prona_CATEGORY

并且没有连接到互联网,或连接丢失,它根据第一个参数提供数据,我的猜测将保存在缓存中。

我的问题是如何仅在某些服务和URL中删除缓存中的此类数据。

任何帮助将不胜感激。

0 个答案:

没有答案