Отправить сообщение и получить запрос одновременно в VOLLEY - PullRequest
0 голосов
/ 06 июля 2018

У меня есть просмотрщик, который показывает мои значения для пользователей. Но мне нужно показать им свои ценности.

Сначала это код для значений GET. (Работает отлично)

 private void loadValues() {

    StringRequest stringRequest=new StringRequest(Request.Method.GET, urlUpload, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {

            try {
                JSONArray values =new JSONArray(response);
                for (int i = 0; i < values.length(); i++) {
                    JSONObject object=values.getJSONObject(i);

                    int id =object.getInt("id");
                    int user_id=object.getInt("user_id");

                    String department=object.getString("department");
                    String description=object.getString("description");
                    String address=object.getString("address");
                    String addressdesc=object.getString("addressdesc");
                    String lattitude=object.getString("lattitude");
                    String longitude=object.getString("longitude");
                    String image=object.getString("image");
                    String state=object.getString("state");

                    Modelmodel=new Model(id,user_id,department,description,address,addressdesc,lattitude,longitude,image,state);
                    recyclerList.add(model);
                }
                adapter=new Adapter(UserRecords.this,recyclerList);
                recyclerView.setAdapter(adapter);

            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

            Toast.makeText(UserRecords.this, error.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }) {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            HashMap<String,String> params =new HashMap<>();
            params.put("user_id","4");  // 4 is just for now. it should return 3 values from sql.
            return params;
        }
    } ; 
    Volley.newRequestQueue(this).add(stringRequest);

}

И это мой PHP-скрипт для GET. И это тоже прекрасно работает. Когда я пытаюсь $user_id2 =4;
он возвращает мне значения.

<?php 

 //  $user_id2  =  $_POST['user_id'];
 require_once 'connect.php';
 mysqli_query($conn,"SET NAMES 'utf8'");

 //Checking if any error occured while connecting
 if (mysqli_connect_errno()) {
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
 die();
 }

 //creating a query

 $stmt = $conn->prepare("SELECT records.id, records.user_id, parameters.p_name AS department, records.description, 
 records.address, records.addressdesc, records.lattitude, records.longitude, records.image, records.state 
 from records,parameters WHERE parameters.p_id=records.department AND parameters.group_id=
 (SELECT groups.id FROM groups where groups.group_name = 'department') AND records.user_id = '$user_id2'");

 //executing the query 
 $stmt->execute();

 //binding results to the query 
 $stmt->bind_result($id,$user_id,$department,$description,$address,$addressdesc,
 $lattitude,$longitude,$image,$state);

 $records = array(); 

 //traversing through all the result 
 while($stmt->fetch()){
 $temp = array();
 $temp['id'] = $id; 
 $temp['user_id'] = $user_id; 
 $temp['department'] = $department; 
 $temp['description'] = $description; 
 $temp['address'] = $address; 
 $temp['addressdesc'] = $addressdesc; 
 $temp['lattitude'] = $lattitude; 
 $temp['longitude'] = $longitude; 
 $temp['image'] = $image; 
 $temp['state'] = $state; 
 array_push($records, $temp);
 }

 //displaying the result in json format 
 echo json_encode($records);

Я сделал POST-запрос перед GET-запросом на Android, но он не работал. Если вы посмотрите конец моего кода SQL, вы увидите records.user_id = '$user_id2'. Мне нужно получить значение user_id2 с помощью запроса POST, затем мне нужно передать это значение в SQL. Затем я сделаю запрос get, и он покажет собственные ценности людей в обзоре переработчиков.

Вкратце: мне нужно отправить сообщение user_id в PHP, затем использовать его в SQL, а затем вернуть значения методом get в Android.

1 Ответ

0 голосов
/ 06 июля 2018

Извините, я только что увидел что-то в Request.Method.

Я ничего не изменил в этом коде, только я изменил Request.Method.GET на Request.Method.DEPRECATED_GET_OR_POST

Я только что видел этот метод сейчас. Так что работает отлично.

...