0

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

4

1 回答 1

0

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

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

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

    在这种情况下,您不需要Cookie在 request 中添加任何内容。所以不需要设置CookieManager。在 php 方面,请确保您PHPSESSID在 URL 中接受了配置,请在此处查找参考。

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

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

于 2016-03-10T19:05:07.033 回答