thanks a lot
Vào 14:58:55 UTC+7 Chủ nhật, ngày 14 tháng mười năm 2012, Keith Wiley đã viết: > > Does Android cache http-requested data? > > I keep a small text file with various app-settings on my webserver. When > my app launches, it sends an http request to my webserver to grab the text > file and retrieve the settings. This enables me to update the settings of > an app installed on a phone "in the field" from the server. > > The problem is, when I update the text file on the server, I usually don't > see an immediate change in the text file retrieved by my app. It can take > hours for the change to show up in my app's http requests. I know that the > problem is not merely one of the file updating through various > buffers/caches on the webserver because I can see the new version of the > file if I load the same URL in a web browser...including a web browser on > the exact same Android device I am running my app on...so a web browser > (even one on the phone itself) sees the updated file immediately after I > change it, but my app doesn't see it for several hours. > > It feels like Android is caching previous http request results and > returning those to apps that make repeated requests instead of reloading > the URLs from the web...and it takes a very long time to label this > presumed cache as stale and reload the file from the server...several hours. > > On a side note, I have tried killing the app to make sure it's totally > gone. I have even tried rebooting the phone and yet the problem still > persists...which is mind-boggling. > > I am quite flummoxed. I am aware that Android is requesting and receiving > a GZipInputStream, and I can see the input stream's type in the debugger, > but that seems irrelevant to my issue. > > Here's how I pull the text file from the web server into my app. Any > ideas why a browser on the same device successfully retrieves the updated > file and my code doesn't? > > String address = "http://URL_of_text_file_on_my_webserver.txt"; > URL url = new URL(address); > HttpURLConnection conn = (HttpURLConnection) url.openConnection(); > InputStream is = (InputStream) conn.getContent(); > Reader reader = new InputStreamReader(is, "UTF-8"); > StringWriter writer = new StringWriter(); > char[] buffer = new char[1024]; > for (int length = 0; (length = reader.read(buffer)) > 0;) > writer.write(buffer, 0, length); > is.close(); > reader.close(); > writer.close(); > String fileStr = writer.toString(); > > Thanks. > > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en