我的应用程序从服务器获取数据,通常是通过使用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中删除缓存中的此类数据。
任何帮助将不胜感激。