Как обработать ответ на несколько запросов в 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?
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(), где вы будете получать свой ответ.