下面是我用来通过传递检索json对象的url从服务器读取响应的方法。
虽然数据已经更新,但仍然存在一个非常特殊的问题,即仍然存在旧值。
我试图找出它的解决方案,但仍然没有成功。
网址类型为:http://www.mywebsite.com/svc/user_auth/user_id
其中用户标识是作为参数传递的用户的唯一整数id。
public static String getResponse(String url){
String downloadedData = null;
Log.e("getResponse", url);
try {
URL downloadURL = new URL(url);
InputStream inputStream = (InputStream) downloadURL.getContent();
if (null != inputStream) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[512];
int readCounter = inputStream.read(buffer);
while (readCounter != -1) {
byteArrayOutputStream.write(buffer, 0, readCounter);
readCounter = inputStream.read(buffer);
}
downloadedData = new String(
byteArrayOutputStream.toByteArray());
/*if (null != downloadedData && !"".equals(downloadedData)) {
downloadedJson = new JSONObject(downloadedData);
}*/
}else{
Log.e("getResponse", "Response is null");
}
} catch (Exception e) {
e.printStackTrace();
}
return downloadedData;
}
任何帮助都将不胜感激。
答案 0 :(得分:0)
不知道URL.getContent()是如何在内部实现的。您可以尝试使用URLConnection
,它允许您控制是否使用setUseCaches()
缓存。
答案 1 :(得分:0)
您是否尝试过从浏览器中打开网址以查看JSON响应?如果您在浏览器中看到旧值,则问题出在服务器端。
如果不是这种情况,请尝试使用DefaultHttpClient进行发布和获取请求,例如:(可能使用您正在使用的方法进行一些缓存,但HttpClient并非如此)
DefaultHttpClient httpclient = getHttpClient();
HttpPost httpost = new HttpPost(url);
httpost.setEntity(entity); //entity has your params wrapped if you have any...this is just an example for POST request, but for your case you can use GET with URL params..
httpclient.execute(httpost);