我習慣於使用Volley,當需要一個響應時,但在這裏唯一的方法我可以看到實現我想要的是使用2個響應。這裏的想法:Android Volley,如何獲得響應並在另一個響應中使用它?
郵政username
於Android,PHP中的得到匹配user_id
,我這樣做:
<?php
require('dbConnect.php');
//this is me, my username in the user table
$Number = $_POST['phonenumberofuser'];
// get the username in the user table, then get the matching user_id
$query = "SELECT * FROM user WHERE username = ?";
$stmt = $con->prepare($query) or die(mysqli_error($con));
$stmt->bind_param('s', $Number) or die ("MySQLi-stmt binding failed ".$stmt->error);
$stmt->execute() or die ("MySQLi-stmt execute failed ".$stmt->error);
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
//get the corresponding user_id in the row
//this is the matching user_id in the user table of the user
$user_id = $row["user_id"];
}
然後在PHP腳本的下一部分,再往下,我想使用該user_id
度日user_id
創建的評論,就像這樣:
$sql2 = "SELECT * FROM review WHERE user_id = '$user_id'";
$results = array();
$result2 = mysqli_query($con,$sql2);
//if user_id has reviews in the db
while($row = mysqli_fetch_array($result2)) {
//make an array called $results
$results[] = array(
'category' => $row['cat_name'],
'name' => $row['name'],
'phone' => $row['phone'],
'comment' => $row['comment'],
);
}
$json = json_encode($results);
echo $json;
?>
正如你可以看到我的PHP文件相呼應,這在我的Android凌空代碼需要照顧,給我的,phone
和comment
。
但我在哪裏把user_id
放在我的排球中,這樣我就可以顯示user_id
創建的相關評論?
這裏是我的Volley
代碼:
// Creating volley request obj
JsonArrayRequest movieReq = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
hidePDialog();
// Parsing json
for (int i = 0; i < response.length(); i++) {
try {
JSONObject obj = response.getJSONObject(i);
Review review = new Review();
review.setCategory(obj.getString("category"));
review.setName(obj.getString("name"));
review.setPhone(obj.getString("phone"));
review.setComment(obj.getString("comment"));
reviewList.add(review);
} catch (JSONException e) {
e.printStackTrace();
}
}
// notifying list adapter about data changes
// so that it renders the list view with updated data
adapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
hidePDialog();
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(movieReq);
}
只需創建在'onResponse()'另一個凌空請求
onResponse
新凌空請求的例子? – Denny是的,我想到了,但我如何隔離user_id響應,所以我可以使用它返回所需的$ json? – CHarris
我不明白你的意思是隔離。但是我也沒有看到問題所在,你可以解析服務器的json響應。所以我相信你可以檢索user_id並將其用於另一個請求 – Denny