【问题标题】:Unexpected response code 500 for my .php/?PHPSESSID=xxxxxxxxxxxxxxxxx我的 .php/?PHPSESSID=xxxxxxxxxxxxxxxxx 的意外响应代码 500
【发布时间】:2016-03-09 07:08:56
【问题描述】:

我正在尝试访问我的 GetUserData.php 文件以将存储在数据库中的用户信息显示到我的 Android 应用程序的个人资料页面上。我有:

    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,

我的会话 ID 是从用户首次登录时开始存储的。但是我收到了错误

BasicNetwork.performRequest:http://............/GetUserData.php/?PHPSESSID=54609c62fec7fc28631d708da687ab55 的意外响应代码 500

下面是剩下的方法:

    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>() {
                @Override
                public void onResponse(String response) {
                    JSONObject jsonObject = null;
                    try {
                        //json string to jsonobject
                        jsonObject = new JSONObject(response);

                        //get json sstring created in php and store to JSON Array
                        result = jsonObject.getJSONArray(Config.json_array);

                        //get username from json array
                        getUserInfo(result);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}

private void getUserInfo(JSONArray jsonArray){
    for(int i = 0; i < jsonArray.length(); i++) {
        try {
            JSONObject json = jsonArray.getJSONObject(i);

            userInfo.add(json.getString(Config.getUsername));
        } catch (JSONException e) {

        }
    }
    getFname.setText(userInfo.indexOf(2));
}

【问题讨论】:

    标签: php android mysql session android-volley


    【解决方案1】:

    要启用通过 GET 而不是 cookie 传递会话 id,您可能必须激活 session.use_trans_sid php.ini 选项,该选项默认禁用(这意味着默认情况下,会话 id 仅由 cookie 传递-- 从不通过 GET)。

    【讨论】:

    • 我无法编辑 php.ini 文件。有没有办法可以在登录期间启用它?比如:ini_set("session.use_trans_sid", true); ???
    • 你可以试试,但不确定它是否有效。如果您无法让它工作,请尝试在您的请求中发送 Cookie 标头。像这样的东西:stringRequest.setHeader("Cookie", "PHPSESSID=" + sessionId);
    • 在我的方法中我会在哪里添加这个?作为StringRequest中的参数?
    • 在上面写着:requestQueue.add(stringRequest);。如果它不起作用,请尝试使用 HttpGet 而不是 Google 的 StringRequest 帮助器。
    • 我不认为 .setHeader 是一种方法。有一个getHeaders吗?我在一个网站上发现了这个,我需要做这样的事情吗?
    【解决方案2】:

    快速浏览一下...和 ​​GetUserData.php/?PHPSESSID=54609c6... 看起来很奇怪,为什么 / 就在 .php 之后?

    【讨论】:

    • 你能帮我弄清楚我的问题吗?
    猜你喜欢
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    相关资源
    最近更新 更多