【问题标题】:Retrofit enqueue methods not being called未调用改造入队方法
【发布时间】:2017-07-21 20:10:24
【问题描述】:

我正在进行异步调用,我能够向服务器发送请求并获得我想要的 JSON(使用邮递员),但由于某种原因,OnResponse 和 OnFailure 方法没有被执行,如果我错过了,请帮助我某事。我正在使用改造2

private List<Advert> getAdverts(){

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl( "http://192.168.100.4:8092/portal/")
            .client(client.build())
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    RequestService requestService = retrofit.create(RequestService.class);

    Call<List<Advert>> customerCall= requestService.getAdverts(accountNumber);
    System.out.println("++++++++++++++ request was made +++++++++++++++++++");


    customerCall.enqueue(new Callback<List<Advert>>() {
        @Override
        public void onResponse(Call<List<Advert>> call, Response<List<Advert>> response) {
            Log.d("onResponse", "" + response.message());

            System.out.println("++++++++++++++ was here+++++++++++++++++++");

            if (response.isSuccessful()) {
                adverts.addAll(response.body());

            } else {
                Toast.makeText(getContext(), "" + response.message(), Toast.LENGTH_SHORT).show();
            }

        }

        @Override
        public void onFailure(Call<List<Advert>> call, Throwable t) {
            Log.d("onFailure", t.toString());
        }
    });

    return adverts;
}

【问题讨论】:

    标签: android callback retrofit2


    【解决方案1】:

    不确定,但您在 de 操作结束之前返回(正如您提到的异步调用)。因此,一旦您入队,您就会返回“广告”(可能会取消您的通话)。

    考虑使用其他替代方法来返回您的响应,例如回调、EventBus、将响应保存在本地存储等。

    【讨论】:

    • 我只是将我的方法的返回类型更改为void,这样我就不必返回任何东西了,仍然没有运气
    • 是的,最近我一直在发送一些请求,它们工作正常,但我只是不知道这个特定请求发生了什么
    • 非常感谢您的努力
    • 它现在工作正常,我有另一种方法干扰了我的请求,再次感谢。
    • @Dilonne,如果您找到了问题的解决方案,最好将其发布在这里。
    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    相关资源
    最近更新 更多