如何使用 Square 的 Retrofit 网络库实现异步回调

Posted

技术标签:

【中文标题】如何使用 Square 的 Retrofit 网络库实现异步回调【英文标题】:How to implement an async Callback using Square's Retrofit networking library 【发布时间】:2013-06-06 17:36:19 【问题描述】:

作为一名开始使用 androidios 开发人员,我遇到了 Retrofit。我了解如何实现同步请求,但在实现带有成功/失败回调的异步请求时遇到了麻烦。具体来说,回调语法对我来说并不清楚,并且没有具体示例说明如何在 Retrofit website、Square blogpost 引入 Retrofit 或我见过的其他地方执行此操作。有人可以在此发布一些示例代码吗?我在 Retrofit repo 中提出了一个问题,要求他们使用此信息更新 README。

【问题讨论】:

【参考方案1】:

在进行了一些研究并在 Android/Java 世界中花费了更多时间之后,我使用他们文档中的示例弄清楚了这一点。

界面:

@GET("/user/id/photo")  
void listUsers(@Path("id") int id, Callback<Photo> cb);

实施:

RestAdapter restAdapter = new RestAdapter.Builder()
            .setServer("baseURL")     
            .build();
ClientInterface service = restAdapter.create(ClientInterface.class);

Callback callback = new Callback() 
    @Override
    public void success(Object o, Response response) 

    

    @Override
    public void failure(RetrofitError retrofitError) 

    
;
service.listUsers(666, callback);

【讨论】:

在创建 restAdapter 时不要忘记调用 setExecutors()。 @SeanPONeil 当您希望回调也发生在主线程之外时,您只需要 setExecutors() 即可。 @Alfie Hanssen:我有一个关于改造的菜鸟查询。在成功方法中, o 和 Response 有什么区别?我应该使用哪一个来获取从服务器发送的 JSON 数据? @Raj 'o' 是请求对象,'response' 是实际结果。您将从“响应”对象中获取 JSON 数据。 我仍然完全不明白如何实现改造回调

以上是关于如何使用 Square 的 Retrofit 网络库实现异步回调的主要内容,如果未能解决你的问题,请参考以下文章

Android开发之Retrofit+RxJava的使用

有没有办法设置一个基本请求参数以包含在使用 Square 的 Retrofit 库发出的每个请求中?

网络加载框架Retrofit

源码分析Retrofit请求流程

Retrofit的使用

Retrofit的使用