Вложенный метод запроса VOLLEY GET не дает правильных результатов - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть два вложенных запроса VOLLEY GET.Первый запрос API дает мне поле id, которое я использую для вызова другой веб-службы.Проблема в том, что я получаю последовательность идентификаторов из первого запроса, при этом она не вызывает ту же последовательность для второго запроса, который использует поле идентификатора, возвращаемое первым запросом.
Это мой вложенный запрос VOLLEY GET.

private void getData() {
            final JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, ApiUrls.RESERVATION, null, new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    for (int i = 0; i < response.length(); i++) {
                        try {
                            JSONObject object = response.getJSONObject(i);
                              final Entry entry = newEntry();
                            String Id = object.getString("id");
                            entry.setId(Id);
                           ID_url = ApiUrls.DETAILS + Id + "/";
                            JsonObjectRequest foodieInfo = new JsonObjectRequest(Request.Method.GET, ID_url, null, new Response.Listener<JSONObject>() {
                                @Override
                                public void onResponse(JSONObject response) {
                                  try {
                                                                              String firstName = response.getString("firstname");
                                        entry.setName(firstName);
                                        adapter.notifyDataSetChanged();
                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }
                                }
                            }, new Response.ErrorListener() {
                                @Override
                                public void onErrorResponse(VolleyError error) {
                                }
                            }) {
                                @Override
                                public Map<String, String> getHeaders() throws AuthFailureError {
                                    Map<String, String> headers = new HashMap<>();
                                    String auth = "JWT " + myToken;
                                    headers.put("Authorization", auth);
                                    headers.put("Content-Type", "application/json");
                                    return headers;
                                }
                            };
                            AppController.getInstance().addToRequestQueue(foodieInfo);

                            current.add(entry);
                            adapter = new ReservationAdapter(current, getActivity().getApplicationContext());
                            recyclerView.setAdapter(adapter);
                            adapter.notifyDataSetChanged();
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                }
            }) {
                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    Map<String, String> headers = new HashMap<>();
                    String auth = "JWT " + myToken;
                    headers.put("Authorization", auth);
                    headers.put("Content-Type", "application/json");
                    return headers;
                }

                @Override
                protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) {
                    int status=response.statusCode;
                    if(status==200){
                    }
                    return super.parseNetworkResponse(response);
                }
            };
            AppController.getInstance().addToRequestQueue(request);
        }  

Идентификатор, который я получаю в первом запросе, тот же, который должен использоваться только в запросе Nested JSON GET.Но он принимает другой идентификатор, возвращаемый первым запросом и вызывающий другой запрос с использованием этой последовательности.Как решить эту проблему?

...