Ich versuche, den Wert eines bestimmten Felds aus der Kopfzeile mithilfe eines Retrofit-Aufrufs abrufen, um verwendet werden, um zurück an den Server gesendet werden. Ich bin erfolgreich darin, den Wert in den try-Block zu bekommen und ihn sofort im try-Block zu senden. Aber wenn ich dasselbe außerhalb der Aufrufinstanz versuche, ist der Wert von abc (wo ich den Wert des Antwortheaders zugewiesen habe) verloren. Ich habe den String abc bereits als globale Variable deklariert. Wie speichere ich den Wert der Zeichenfolge?Wie kann der Wert einer Variablen in einem Retrofit-Aufruf gespeichert werden?
public class MainActivity extends AppCompatActivity {
private static final String LOG_TAG = "MainActivityClass";
String abc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
Call<List<TrendingModel>> call = apiService.getAllTodos();
call.enqueue(new Callback<List<TrendingModel>>() {
@Override
public void onResponse(Call<List<TrendingModel>> call, Response<List<TrendingModel>> response) {
try {
List<TrendingModel> todoModels = response.body(); // WHERE WE GET THE RESPONSE BODY
abc = response.headers().get("Tanand"); // WHERE WE GET THE RESPONSE HEADER AND ASSIGN IT TO abc, WHICH WE DECLARED GLOBALLY
ApiClient.getClient(abc).create(ApiInterface.class); // PASSING THE abc VARIABLE TO THE GETCLIENT(TOKEN) METHOD WITHIN
// THE SAME TRY BLOCK WHICH WORKDS
} catch (Exception e) {
Log.d("onResponse", "There is an error");
e.printStackTrace();
}
}
@Override
public void onFailure(Call<List<TrendingModel>> call, Throwable t) {
Log.d("onFailure", t.toString());
}
});
ApiClient.getClient(abc).create(ApiInterface.class); // VALUE OF abc IS NOT PERSISTED HERE (abc IS NULL) ALTHOUGH WE DECLARED IT GLOBALLY
}
}