I have AsyncTask and the doInBackground method inside which, I sending POST request using Retrofit. My code looks like:
//method of AsyncTask protected Boolean doInBackground(Void... params) { Retrofit restAdapter = new Retrofit.Builder() .baseUrl(Constants.ROOT_API_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); IConstructSecureAPI service = restAdapter.create(IConstructSecureAPI.class); //request Call<JsonElement> result = service.getToken("TestUser", "pass", "password"); result.enqueue(new Callback<JsonElement>() { @Override public void onResponse(Call<JsonElement> call, Response<JsonElement> response) { } @Override public void onFailure(Call<JsonElement> call, Throwable t) { } }); return true; }
The problem is: Retrofit sending request asynchronously and while it, the doInBackground method returning the value. So I need to send a request in the same thread with all executions in the sequence. One by one. And returning from doInBackground occurs after the request finished. How can I send a request in the same thread using Retrofit?
Advertisement
Answer
The Call
class has an execute()
method that will make your call synchronously.
enqueue()
is explicitly for making an asychronous call.