Android:Http获取旧响应

时间:2014-01-06 14:20:11

标签: android web-services http-get

下面是我用来通过传递检索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;
        }

任何帮助都将不胜感激。

2 个答案:

答案 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);