I am making multiple Retrofit requests and with every request I need to generate new client with new token. The problem is it is not waiting for it to finish so the client is null
. I tried to add callback to generatePrivateToken()
as well but it did not work.
public void generatePrivateToken(){
mNewControl.obstest(GETTOKEN)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Response<ResponseBody>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Response<ResponseBody> responseBodyResponse) {
key = responseBodyResponse.headers().get("Token");
new ApiKeys().encryptToken(key, new GeneralCallback() {
@Override
public void onSuccess(String token) {
Log.e("Token", token);
client = new HttpClient(USERNAME,token, emptyTag, emptyTag).getClient();
}
});
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
public void getControlData(){
generatePrivateToken();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(HOST_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
newControl service = retrofit.create(newControl.class);
Call<List<GetControlData>> call = service.controlData(CONTROL);
call.enqueue(new Callback<List<GetControlData>>() {
@Override
public void onResponse(Call<List<GetControlData>> call, Response<List<GetControlData>> response) {
//do something, start new retrofit method
}
@Override
public void onFailure(Call<List<GetControlData>> call, Throwable t) {
}
});
}