【问题标题】:Can someone explain how to use CookieManager in my app?有人可以解释如何在我的应用程序中使用 CookieManager 吗?
【发布时间】:2016-06-25 17:52:09
【问题描述】:

我正在尝试从数据库中获取用户数据,并将其显示在我的应用程序的帐户页面上。在我的 php 中,我将登录用户存储在会话中。我发现要访问用户会话,我必须将 sessionId 添加到我的字符串请求中,例如:

    private void getUserData() {

    SharedPreferences sharedPreferences = getSharedPreferences(Config.sharedPref, Context.MODE_PRIVATE);
    String sessionId = sharedPreferences.getString(Config.SID, "SessionID");

    StringRequest stringRequest = new StringRequest(Request.Method.GET, Config.SERVER_ADDRESS + "GetUserData.php?PHPSESSID=" + sessionId,

            new Response.Listener<String>() {

将 sessionId 添加到请求中。但是,我收到了一个意外的响应代码 500 错误,我相信这与管理 cookie 有关。我正在尝试做类似的事情

     CookieManager manager = new CookieManager();
    CookieHandler.setDefault(manager);

但不确定如何执行此操作或将 cookie 管理器放在方法中的什么位置。 谢谢。

【问题讨论】:

标签: php android session-cookies android-volley android-cookiemanager


【解决方案1】:

您可以通过两种方式将SessionID 传递到您的服务器:

  1. 像你提到的那样在 URL 中发送SessionID

    StringRequest stringRequest = new StringRequest(Request.Method.GET, Config.SERVER_ADDRESS + "GetUserData.php?PHPSESSID=" + sessionId,  ...
    

    在这种情况下,您不需要在 request 中添加任何 Cookie 。所以不需要设置CookieManager。在 php 方面,请确保您已配置为在 URL 中接受 PHPSESSID,请查看 here 以供参考。

  2. SessionID 放入http 请求的Cookie 标头字段中。在这种情况下,您需要设置CookieManager 来管理为您工作的cookie。在这里您不需要将 sessionId 作为 URL 参数发送。

您似乎混淆了这两种方式。

【讨论】:

  • 非常感谢您的回复。如何在 PHP 端接受 PHPSESSID?我查看了您提供的链接,它说要确保在 php.ini 文件中启用了session.use_trans_sid。但是我无法在我正在使用的服务器上编辑此文件。
猜你喜欢
  • 2017-01-30
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 2010-11-17
  • 2021-02-18
  • 2015-03-30
相关资源
最近更新 更多