如何使用 Square 的 Retrofit 网络库实现异步回调
Posted
技术标签:
【中文标题】如何使用 Square 的 Retrofit 网络库实现异步回调【英文标题】:How to implement an async Callback using Square's Retrofit networking library 【发布时间】:2013-06-06 17:36:19 【问题描述】:作为一名开始使用 android 的 ios 开发人员,我遇到了 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 网络库实现异步回调的主要内容,如果未能解决你的问题,请参考以下文章