У меня есть два вложенных запроса 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.Но он принимает другой идентификатор, возвращаемый первым запросом и вызывающий другой запрос с использованием этой последовательности.Как решить эту проблему?