【问题标题】:android difference between cookies and SharedPreferencesandroid cookie 和 SharedPreferences 的区别
【发布时间】:2011-09-16 12:37:18
【问题描述】:

我正在尝试开发一个应用程序,它将用户名、名字、姓氏密码从我的应用程序发送到服务器(网站)。 如果该用户不存在,则它注册该用户,如果存在则登录该用户。 所有这些都运行良好。问题是我想退出,因为需要设置 cookie。

如何设置我没有得到的 cookie。还是sharedpreference好?

下面是我的代码,

private boolean sendJsonToServer(String jsonStr) {
        Log.d("sendJsonToServer", "called");
        boolean isDataSend = false;
        try {
            HttpClient client = new DefaultHttpClient();

            HttpPost request = new HttpPost(url);

            List<NameValuePair> value = new ArrayList<NameValuePair>();

            value.add(new BasicNameValuePair("Name", jsonStr));

            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(value);

            request.setEntity(entity);

            HttpResponse res = client.execute(request);


            HttpEntity httpEntity = res.getEntity();
            String entityStr = convertStreamToString(httpEntity.getContent());

            JSONObject resObject = new JSONObject(entityStr);
            resObject.getString("result");
            resObject.getString("token");

            Log.e("entity", "" + entityStr + "  " + resObject.getString("result")
                            + "   " + resObject.getString("token"));

            Editor edit = prefUserDetails.edit();
            edit.clear();
            edit.putString(TOKEN, resObject.getString("token"));
            edit.commit();

            String token = prefUserDetails.getString("token", "");
            Log.e("token from sharedPreference", token);

                    String[] status_String = res.getStatusLine().toString().trim()
                .split(" ");
            if (status_String[1].equals("200")) {
                isDataSend = true;
                Log.e("isSend", "ture");
            }


        } catch (Exception e) {
            System.out.println("Exp=" + e);
        }
        return isDataSend;
    }

我正在发送包含用户名的 jsonObject(jsonStr),将所有详细信息发送到我的服务器以进行注册。注册后它登录并且服务器给出响应,一个是结果,另一个是令牌。我想将该令牌存储到cookie中。

然后,如果我按下退出按钮,则应从 cookie 中删除令牌。 我在这里使用了上述函数中的共享偏好,但我希望使用 cookie。

请给我一个方法。 谢谢

【问题讨论】:

  • 共享首选项不需要处理文件 I/O。
  • 为了能够退出 - 用户必须已经设置了一个(会话)cookie,假设在用户登录时给出?但是您没有cookie,所以您无法退出?对吗?
  • 假设您不控制服务器(网站) - 检查是否可以调用 url 以注销 - 如果幸运的话,它是一个带有“get”操作的简单 URL。在我看来,您有一个有效的会话 cookie(您使用的是 WebView 吗?),我理解,您的应用在浏览已登录的页面时确实让您保持登录状态。
  • 我没有使用任何 webview。只是我的应用程序与服务器交互并从服务器获取数据
  • 那么使用 HttpClient 呢?您告诉我们的越多,我们就越有可能为您提供答案。也许您可以使用一些代码更新您的帖子,如果您不想公开发布,请排除实际 URL。

标签: android cookies sharedpreferences


【解决方案1】:

当我们谈论 cookie 时,SharedPreference 是一个不错的选择。我认为您将在 cookie 中存储与会话相关的日期,并且共享偏好很好地支持此功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 2013-02-26
    • 2011-11-24
    • 2011-08-23
    • 1970-01-01
    • 2010-09-26
    • 2011-09-17
    相关资源
    最近更新 更多