gpt4 book ai didi

java - 由于某种原因,$_SESSION 无法在 Android 应用程序中运行

转载 作者:行者123 更新时间:2023-11-29 21:24:38 25 4
gpt4 key购买 nike

我试图将登录的用户存储在新 session 中,从数据库获取信息,将其放入 json 数组,然后在 android 中获取该数组并在布局中显示结果。然而,当我运行该应用程序时,从 php 文件返回的数组为空。如果我要在不同的程序(例如 Postman)中测试 php 文件,我会得到正确的响应

{"result":[{"id":"12","fname":"C","lname":"Wei","username":"cw","email":"werrs.‌​com"}]}

这里是php文件和java方法。

<?php
session_start();
if($_SERVER['REQUEST_METHOD'] == 'GET'){

$username = $_SESSION['username'];

$sql = "SELECT * FROM USER WHERE username = '$username'";

require_once('connect.inc.php');

$run = mysqli_query($conn, $sql);
$result = array();

while($row = mysqli_fetch_array($run)){
array_push($result, array(
'id' => $row['id'],
'fname' => $row['fname'],
'lname' => $row['lname'],
'username' => $row['username'],
'email' => $row['email'],
));
}

echo json_encode(array('result'=>$result));

mysqli_close($conn);
}
?>

在Postman中,它成功获取登录用户,但在android中却没有。

    private void getUserData() { StringRequest stringRequest = new 
StringRequest(Request.Method.GET,
Config.SERVER_ADDRESS + "GetUserData.php",
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) {

}
}
}

最佳答案

为了检索服务器端先前启动的 session ,您的请求必须包含(先前 session 的) session ID 作为 GET 参数。

PHP 的默认值是 PHPSESSID=XXXX。

Cookie 是 Postman 中不会失败的原因。 PHP 自动为带有相应 session ID 的 cookie 附加一个 header 。

关于java - 由于某种原因,$_SESSION 无法在 Android 应用程序中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35567062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com