在Android客户端中缓存HTTP响应

时间:2015-02-17 14:46:27

标签: java android json apache http

我有以下情况:

  1. 将http post(发布数据包含json字符串)请求发送到我的远程服务器。
  2. 在json中从我的服务器获取http post响应:{“result”:true}
  3. 断开平板电脑中的所有互联网连接。
  4. 重复步骤1中描述的发布请求。
  5. 获得相同的缓存“响应” - {“结果”:true},我没想到会...我不希望我的http客户端会缓存任何数据。我希望得到null或类似的东西。
  6. 如何防止http客户端缓存数据?

    我的服务处理程序如下所示:

    public String makeServiceCall(String url, int method,
            List<NameValuePair> params, String requestAction) {
        try {      
    
            DefaultHttpClient httpClient = new DefaultHttpClient();
    
            HttpEntity httpEntity = null;
            HttpResponse httpResponse = null;
    
            // Checking http request method type
            if (method == POST) {
                HttpPost httpPost = new HttpPost(url);
    
                // adding post params
                if (params != null) {
                    httpPost.setEntity(new UrlEncodedFormEntity(params));
                }
                httpResponse = httpClient.execute(httpPost);
            }
    
            else if (method == GET) {
                // appending params to url
                if (params != null) {
                    String paramString = URLEncodedUtils
                            .format(params, "utf-8");
                    url += "?" + paramString;
                }
                HttpGet httpGet = new HttpGet(url);
    
                httpResponse = httpClient.execute(httpGet);
            }
    
            httpEntity = httpResponse.getEntity();
            response = EntityUtils.toString(httpEntity);
    
    
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
           // Toast.makeText(Globals.getContext(), "check your connection", Toast.LENGTH_SHORT).show();
        }        
        return response;
    
    }
    

1 个答案:

答案 0 :(得分:2)

我刚注意到response是一个成员变量。为什么需要一个成员变量来返回此结果。你可能在第二次尝试时返回相同的结果。重新抛出你捕获的异常并让调用者处理它。