2016-02-23 123 views
0

我想将登录用户存储在新的会话中,从数据库获取信息,将其放入json数组,然后在android中获取数组在布局中显示结果。但是,当我运行应用程序时,从php文件返回的数组是空的。如果我在不同的程序,如邮差但是测试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); 
} 
?> 

在邮差,它成功地获取登录的用户,但在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) { 

     } 
    } 
} 

回答

0

为了检索服务器端之前发起的会话,你的请求必须包含会话ID(即以前的会话)作为GET参数。

PHP的缺省值为PHPSESSID = XXXX。

Cookie是Postman不会失败的原因。 PHP会自动为cookie添加相应的会话ID。

+0

我使用散列表来做这个吗? – cdub

+0

只需以最适合您的需求的格式存储以前获取的会话标识并将其附加到以下请求:Config.SERVER_ADDRESS +“GetUserData.php?PHPSESSID =”+ myPreviouslyStoredSessionId –

+0

好的。我正在努力获取会话ID。 – cdub

相关问题