【问题标题】:Returning Retrofit POJO from method从方法返回改造 POJO
【发布时间】:2015-12-24 08:28:59
【问题描述】:

也许你可以帮助我。我在从方法返回时遇到了一些问题,即通过改造生成的 POJO。

我需要从类方法返回 pojo 通过改造生成的,以及对 de pojo 的一些修改。

这是方法:

public MensajeError iniciarSesion(String usuario,String password)

这是方法实现:

    public MensajeError iniciarSesion(String usuario,String password) {
    Conector apiService =
            restAdapter.create(Conector.class);

    apiService.iniciarSesion(usuario, password, new Callback<MensajeErrorR>() {
        @Override
        public void success(MensajeErrorR mensajeErrorR, Response response) {


        }

        @Override
        public void failure(RetrofitError error) {
            Log.v("TAG", "ACA HAY QUE HACER EL MANEJO DEL ERROR");
        }

    });
    //here I need to get the mensajeErrorR pojo and make some modifications, and then return it.

    return mensajeErrorR; //Maybe I will return another class, but with data from de POJO 
}

如何从成功方法中获取 mesajeErrorR pojo?在success方法里面一切都很好,我可以毫无问题地看到mesajeErrorR的值,我不知道如何访问这个方法之外的数据。

对不起我的英语xD

谢谢!!

【问题讨论】:

  • 你需要把它放回主线程,或者以你的主线程可以看到的方式持久化它。现在,我为此使用公共汽车。

标签: android web-services retrofit


【解决方案1】:

对此有两个答案:

一、就是在你的Connector界面修改声明

void iniciarSesion(String usuario, String password, Callback<MensajeErrorr> callback);

MensajeError iniciarSession(String usuario, String password

那么你可以写:

MensajeError error = iniciarSession(usuario, password);

你的方法有错误。也就是说,如果在 UI 线程上调用 iniciarSesion 方法,这将不起作用 - 将引发异常,因为不允许在主线程上进行网络调用。

第二个答案是您无法真正访问方法中的错误对象。它是通过回调接收的,你所能做的就是重组你的代码,以便你修改sucess回调中的错误对象,并用修改后的数据调用另一个监听器。

【讨论】:

    猜你喜欢
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 2015-01-14
    • 2013-11-18
    • 2020-02-10
    • 2015-11-25
    • 1970-01-01
    相关资源
    最近更新 更多