Как обработать ответ на несколько запросов в ION и Volley

Я работаю с API Instagram в том, что я использую ion lib для запроса API, мой вопрос заключается в том, как обработать ответ на несколько запросов, используя мой код, как это

public class UserProfileActivity extends AppCompatActivity implements
   FutureCallback {
        :
        :
   Ion.with(context)
   .load("http://example.com/test1")
   .asString()
   .setCallback(this);

  Ion.with(context)
  .load("http://example.com/test2")
  .asString()
  .setCallback(this);

   @Override
   public void onCompleted(Exception exception, String response) {
    }

 }

//and i don't want to use like this (anonymous class )

  Ion.with(context)
  .load("http://example.com/thing.json")
  .asJsonObject()
  .setCallback(new FutureCallback() {
      @Override
      public void onCompleted(Exception e, JsonObject result) {
      // do stuff with the result or error
    }
 });

в этом случае, если я запрашиваю 2 запроса test1 и test2, как я могу различить 2 ответа на запрос в одном обратном вызове

и то же самое с залпом

РЕДАКТИРОВАТЬ

любая помощь по многопоточности в Android?

выпуск № 635

2 ответа

Вы можете добавить уникальное значение Id для каждого запроса (ключ должен быть одинаковым) в заголовке, а затем в проверке ответа на тот же идентификатор запроса. Обратите внимание, что вам нужно использовать ".withResponse ()", а также реализовать "FutureCallback".

public class UserProfileActivity extends AppCompatActivity implements
   FutureCallback<Response<String>> {
        :
        :
   Ion.with(context)
   .load("http://example.com/test1")
   .setHeader("REQUEST_ID","test1")
   .asString()
   .withResponse()
   .setCallback(this);

  Ion.with(context)
  .load("http://example.com/test2")
  .setHeader("REQUEST_ID","test2")
  .asString()
  .withResponse()
  .setCallback(this);

   @Override
   public void onCompleted(Exception exception, Response<String> response) {
         if (response.getRequest().getHeaders().get("REQUEST_ID").equals("test1")) {
             //do something based on response of test 1
         }else if (response.getRequest().getHeaders().get("REQUEST_ID").equals("test2")) {
             //do something based on response of test 2
         }
    }

 }

В приведенном выше примере вы можете сделать "REQUEST_ID" в качестве константы.

Вы можете передать Контекст любого Класса, Фрагмента или Действия в

1- .setCallBack(контекст)

После этого реализуйте FutureCallBack в классе, фрагменте или действии, которые вы указали в контексте.

После реализации FutureCallBack он объявит метод onComplete(), где вы будете получать свой ответ.

Другие вопросы по тегам