我正在尝试访问我的 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/的意外响应代码 500?PHPSESSID=54609c62fec7fc28631d708da687ab55
这是该方法的其余部分:
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));
}
要启用通过 GET 而不是 cookie 传递会话 id,您可能需要激活 session.use_trans_sid
php.ini 选项,该选项默认处于禁用状态(这意味着,通过 defaut,会话 ID 仅由 cookie 传递 - 永远不会由 GET 传递)。
快速浏览一下...和 GetUserData.php/?PHPSESSID=54609c6...看起来很奇怪,为什么/就在.php之后?