有人可以解释如何在我的应用程序中使用CookieManager吗?

时间:2016-03-10 18:07:27

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

我正在尝试从数据库中获取用户数据,并将其显示在我的应用中的帐户页面上。在我的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管理器放在方法中的位置。 谢谢。

1 个答案:

答案 0 :(得分:0)

有两种方法可以将SessionID传递到您的服务器:

  1. 像您提到的那样在网址中发送SessionID

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

    在这种情况下,您不需要在请求中添加任何Cookie。所以不需要设置CookieManager。在php端,请确保您在URL中接受PHPSESSID的配置,请查看here以获取参考。

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

  3. 你似乎在混淆这两种方式。