Php 安卓截击,我如何得到一个响应并在另一个响应中使用它?
我习惯于在只需要一个回应的情况下使用截击,但在这里,我能看到实现我想要的目标的唯一方法是使用两个回应。我的想法是: 从Android发布Php 安卓截击,我如何得到一个响应并在另一个响应中使用它?,php,android,android-volley,Php,Android,Android Volley,我习惯于在只需要一个回应的情况下使用截击,但在这里,我能看到实现我想要的目标的唯一方法是使用两个回应。我的想法是: 从Android发布用户名,在Php中获取匹配的用户id,我这样做: <?php require('dbConnect.php'); //this is me, my username in the user table $Number = $_POST['phonenumberofuser']; // get the username in the user tabl
用户名
,在Php中获取匹配的用户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"];
}
$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截击代码所处理的$json
,在视图中为我提供了名称
、电话
和注释
但是我应该把user\u id
放在哪里,这样我就可以显示user\u id
创建的相关评论了
这是我的截击
代码:
// 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);
}
//创建截击请求对象
JsonArrayRequest movieReq=新的JsonArrayRequest(url,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
hidePDialog();
//解析json
对于(int i=0;i
在第一个请求的onResponse
中添加新截击请求的示例
// change JSONArrayrequest to your appropiate request to get the user id
JsonArrayRequest userReq = new JsonArrayRequest(URL_TO_GET_USERID,
new Response.Listener <JSONArray> () {
@Override
public void onResponse(JSONArray response) {
// parse your response to get the user_id
String user_id = <RESULT FROM PARSING YOUR RESPONSE>;
String URL_WITH_USERID = <YOUR URL> + user_id;
JsonArrayRequest movieReq = new JsonArrayRequest(URL_WITH_USERID,
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 geting user info: " + error.getMessage());
hidePDialog();
}
});
// Adding request for getting user info to request queue
AppController.getInstance().addToRequestQueue(movieReq);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error getting user: " + error.getMessage());
hidePDialog();
}
});
// Adding request for getting user_id to request queue
AppController.getInstance().addToRequestQueue(userReq);
//将JSONArrayrequest更改为您的批准请求以获取用户id
JsonArrayRequest userReq=新的JsonArrayRequest(URL_TO_GET_USERID,
新的Response.Listener(){
@凌驾
public void onResponse(JSONArray响应){
//解析您的响应以获取用户\u id
字符串user_id=;
字符串URL_,其中_USERID=+user_id;
JsonArrayRequest movieReq=新的JsonArrayRequest(带有用户ID的URL),
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
hidePDialog();
//解析json
对于(int i=0;i
只需在onResponse()
中创建另一个截击请求?是的,我想到了,但是我如何隔离用户id响应,以便使用它返回所需的$json?我不理解隔离的含义。但我也不知道问题是什么,您可以解析来自服务器的json响应。因此,我相信您可以检索用户id并将其再次用于另一个请求是的,我相信我也可以这样做。问题是如何做。回到第一条评论,在onResponse
中添加另一个截击请求。虽然还没有完全实现,但我相信您的代码已经将我带向了正确的方向。