2015-08-05 2 views
4

В настоящее время я использую этот код, чтобы получить данные с сервераHttpURLConnection держать кэш

public static String getResponse(String URL) throws IOException{ 

    try{ 
     String response_string; 
     StringBuilder response = new StringBuilder(); 
     URL url = new URL(URL); 
     HttpURLConnection httpconn = (HttpURLConnection) url.openConnection(); 

     if (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK){ 
      BufferedReader input = new BufferedReader(new InputStreamReader(httpconn.getInputStream())); 
      String strLine = null; 
      while ((strLine = input.readLine()) != null){ 
       response.append(strLine); 
      } 
      input.close(); 
      response_string = response.toString(); 
     } 

     httpconn.disconnect(); 

     return response_string; 
    } 
    catch(Exception e){ 
     throw new IOException(); 
    } 

} 

Но, похоже, он держит кэш, может быть, не я не уверен, но если я изменить данные на сервере и повторно открыть активность, она по-прежнему остается неизменной при применении. Я использовал HttpClient, перед которым работала хорошо, но поскольку она устарела с API 22, я изменил ее на HttpURLConnection. Так можно ли это исправить?

+0

does '' context.getCacheDir() '' есть что-нибудь в нем? – StephenG

+0

Нет, я никогда не использовал это. – Enve

+0

Под «повторным открытием» вы имеете в виду переход к работающим приложениям и повторное открытие оттуда или вы хотите закрыть приложение и снова открыть? – George

ответ

7

Вы можете увидеть, если опция кэш активируется по умолчанию с помощью:

getDefaultUseCaches(); //or 
getUseCaches(); 

Как видно here in the documentation.

Если вы находите вашу проблему, то вы можете просто изменить его с помощью

setDefaultUseCaches(boolean newValue) //or 
setUseCaches(boolean newValue) // Uses a flag (see documentation) 

Как видно here.