Как зациклить call на сервер? Retrofit

У меня проблема. Я отправлю POST с номером телефона на сервер и чекаю после этого GET запрос. Сервер обрабатывает запрос со статусом "wait" и "ok" и возвращает результат. Мне нужно получать body только тогда, когда статус "ok". В противном случае зациклить вызов раз в 3 секунды и делать повторно с таймаутом в 30 секунд. Если за 30 секунд не было "ok" то я вывожу информацию "Информация не найдена, попробуйте позднее"

Помогите, пожалуйста.

Мой интерфейс. тут все ок

public interface ServerApiInterface {
@GET("checkphone/client/{phone}")
Call<PhoneNumberModel> getAllInfo(@Path("phone") String phone);

@POST("checkphone2/client")
Call<PhoneNumberModel> createPost(@Body PhoneNumberModel number);

}

мой Post method

private void startToPost() {
    ServerApiInterface myServerPlaceHolder = RetroRestClient.getRetrofitInstance().create(ServerApiInterface.class);
    PhoneNumberModel myPhoneNumber = new PhoneNumberModel(phone);
    Call<PhoneNumberModel> postCall = myServerPlaceHolder.createPost(myPhoneNumber);
    postCall.enqueue(new Callback<PhoneNumberModel>() {
        @Override
        public void onResponse(Call<PhoneNumberModel> call, Response<PhoneNumberModel> response) {
            if(response.isSuccessful()) {
                goToGetRequest();
                //вызываю гет запрос
            }
        }
        @Override
        public void onFailure(Call<PhoneNumberModel> call, Throwable t) {
            t.printStackTrace();
        }
    });
}

Мой GET метод

private void goToGetRequest() {
        ServerApiInterface myServerPlaceHolder = RetroRestClient.getRetrofitInstance().create(ServerApiInterface.class);
        Call<PhoneNumberModel> getCall = myServerPlaceHolder.getAllInfo(phone);
       Thread thread = new Thread() {
           @Override
           public void run() {
               super.run();
               try {
                   String s = getCall.execute().body().getState();
                   PhoneNumberModel d = getCall.clone().execute().body();
                   Log.d("ddd", s);
                   if (s.equals("ok")) {
                       Log.d("ddd", s);
                       String ggg = new Gson().toJson(d);
                       //выполням работу дальше
                       sendSomething(ggg);

                   } else {
                       Log.d("ddd", "не найдено. попробуйте позднее");
                   }
                   Thread.sleep(3000);
               } catch (Exception e) {
                   e.printStackTrace();
               }
           }
       };
       thread.start();
    }

Ответы (0 шт):