Вызов модификации выполняется, но не вызывает onResponse или onFailure

Мой вызов выполняется, но не вызывает метод onResponse или onFailure. Возвращаемый объект Json содержит изображение внутри

Это код в моем классе интерактора

 private ExamApi initiateRetrofit() {
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    return retrofit.create(ExamApi.class);
}

public void getExamImage(String user, String token,String exId, String exDocId) {
    if (examApi == null) initiateRetrofit();
    Call<ResponseBody> call = examApi.getExamImage(user,token,exId,exDocId);
    call.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            listener.onImageSuccess(response.body());
        }

        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            //TODO ONFAILURE
            //listener.onImageFailure();
           listener.onFailure();
        }
    });
}

это мой экзаменApi

@GET("mobile/getExamImage")
Call<ResponseBody> getExamImage(
        @Query("user") String username,
        @Query("token") String token,
        @Query("exid") String exId,
        @Query("edid") String exDocId
);

person Thanee Stevens    schedule 03.05.2016    source источник
comment
какое имя класса у вашего examApi   -  person Vishal Patel    schedule 03.05.2016
comment
Вы также можете опубликовать свой класс ResponseBody, тогда я могу дать вам рабочий код   -  person Yasin Kaçmaz    schedule 03.05.2016
comment
@YasinKaçmaz я использую okhttp3.ResponseBody   -  person Thanee Stevens    schedule 03.05.2016
comment
@ThaneeStevens я разместил рабочий пример, вы можете взглянуть на   -  person Yasin Kaçmaz    schedule 03.05.2016
comment
@ThaneeStevens, и если вы дадите мне свой пример формата ответа json, я могу вам легко помочь   -  person Yasin Kaçmaz    schedule 03.05.2016
comment
@YasinKaçmaz просто перезапускает изображение   -  person Thanee Stevens    schedule 04.05.2016
comment
ваш ответ примерно такой: {image}@Thanee Stevens   -  person Lampard    schedule 10.05.2016


Ответы (1)


Это происходит потому, что вы делаете асинхронный вызов модификации. Вы пытаетесь захватить данные еще до того, как произойдет сетевой вызов. Это дает нулевой результат. Попробуйте транслировать результат с помощью широковещательного приемника или сторонней библиотеки, такой как EventBus, которая сделает ваш результат доступным после сетевого вызова.

person Bharath    schedule 05.06.2018
comment
Обновление: в дополнение к тому, что я сказал, широковещательный приемник или eventbus.post(‹value›) должны вызываться из метода onResponse вашего модифицированного вызова. - person Bharath; 07.06.2018