0
私は複数のRetrofitリクエストを作成しており、リクエストごとに新しいトークンで新しいクライアントを生成する必要があります。問題は、クライアントがnull
のように終了するのを待っていないということです。 generatePrivateToken()
にもコールバックを追加しようとしましたが、うまくいきませんでした。Retrofit、RxJavaでコールバックを待つ方法
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) {
}
});
}