Язык Java. Получение ссылки featured_media из json внутри рабочего цикла onResponse вызывая второй цикл
Только изучаю программирование Java. Создал парсинг объектов из json ответа для получения. Всё работает, но Внутри цикла в методе onResponse(JSONArray response) вместо url картинки получаю её id. По этому id можно получить новый url json JSONArray где в объектах так же есть нужная мне ссылка. Итого не могу понять как запустить onResponse и цикл внутри него самого второй раз, что бы получить нужный конечный url картинки.
код извлечения поста из json в нём конечно есть и извлечение других элементов в переопределённом методе onResponse
public void extractPosts(String URL) {
View v = binding.getRoot();
RequestQueue queue = Volley.newRequestQueue(mContext);
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET,
URL,
null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
//Log.d("TAG", "onResponse" + response.toString());
for (int i = 0; i < response.length(); i++) {
// extract the date
try {
Post post = new Post();
//extract date. need create filtration for date
JSONObject jsonObjectData = response.getJSONObject(i);
// extract title
JSONObject titleObject = jsonObjectData.getJSONObject("title");
post.setTitle(titleObject.getString("rendered"));
// extract content
JSONObject contentObject = jsonObjectData.getJSONObject("content");
post.setContent(contentObject.getString("rendered"));
//extract excerpt
JSONObject excerptObject = jsonObjectData.getJSONObject("excerpt");
post.setContent(excerptObject.getString("rendered"));
// extract image prew - ВОТ ТУТ У МЕНЯ ПРОБЛЕМА!
/*String stringIdImage = jsonObjectData.getString("featured_media");
JSONArray respond2 = new JSONArray(R.string.Url_Media)+stringIdImage))
String stringIdImage = jsonObjectData.getString("featured_media");
String strJsonUrlImage =
Log.d("BIG", getString(R.string.Url_Media)+stringIdImage);*/
} catch (JSONException e) {
e.printStackTrace();
}
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(requireContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
} );
queue.add(request);
} ```
**Не знаю, делать отдельный метод на основе другой библиотеки? Или есть возможность переопределить onResponse дважды?
Спасибо всем кто помогает.**
Ответы (1 шт):
Проблема решена. Проблема была не во включении метода JsonArrayRequest onResponse внутрь самого себя, а в том, что новая ссылка json начиналась с объекта, а не с Array массива.
Итого в текущий код включён новый метод в который передаю подготовленную в прошлом методе ссылке.
public void extractImage(String URLImg) {
String s = "WOOOOOOOOORRRRKKKKK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
View v = binding.getRoot();
String respond2;
RequestQueue queue = Volley.newRequestQueue(mContext);
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET,
URLImg,
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
String stringLink = response.getString("link");
//Log.d("IMG", stringLink);
//Log.d("IMG", s);
post.setFeature_image(stringLink);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(requireContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
queue.add(request);
}