Я пытаюсь решить проблему, когда я буду делать пару асинхронных вызовов и на основе исходного запроса выполнять задачу. Чтобы решить эту проблему, я пытаюсь добавить TAG к каждому запросу, а затем при успешном ответе я могу получить тег и выполнить действие на основе тега. Здесь я использую TAG только для идентификации исходного запроса.
Проблема
Перед вызовом метода постановки в очередь я устанавливаю тег в исходный запрос. Но когда я получаю ответ в успешном обратном вызове, я получаю другой тег, который я не устанавливал. Каким-то образом сам объект запроса появляется как объект тега. Я не уверен, как???
Пожалуйста, проверьте код ниже-
GitHubService gitHubService = GitHubService.retrofit.create(GitHubService.class);
final Call<List<Contributor>> call = gitHubService.repoContributors("square", "retrofit");
// Set the string tag to the original request object.
call.request().newBuilder().tag("hello").build();
call.enqueue(new Callback<List<Contributor>>() {
@Override
public void onResponse(Call<List<Contributor>> call, Response<List<Contributor>> response) {
Log.d("tag", response.raw().request().tag().toString());
// I'm getting Request{method=GET, url=https://api.github.com/repos/square/retrofit/contributors, tag=null} as the value of the tag. WHY????
final TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(response.body().toString());
}
@Override
public void onFailure(Call<List<Contributor>> call, Throwable t) {
final TextView textView = (TextView) findViewById(R.id.textView);
textView.setText("Something went wrong: " + t.getMessage());
}
});
Может ли кто-нибудь указать, что именно я делаю неправильно здесь. Любая помощь будет оценена по достоинству.