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

Alf*_*sen 28 java networking android asynchronous retrofit

作为一名开始使用Android的iOS开发人员,我遇到了Retrofit.我理解如何实现同步请求,但是在使用成功/失败回调实现异步请求时遇到了问题.具体来说,Callback语法对我来说并不清楚,并且没有具体的例子说明如何在Retrofit 网站,Square 博客引入Retrofit或我见过的其他地方这样做.有人可以发一些示例代码吗?我在Retrofit repo中提出了一个问题,要求他们用这个信息更新README.

Alf*_*sen 54

经过一些更多的研究,只是花了更多的时间在Android/Java世界中,我想出了这一点,使用他们的文档中的示例.

接口:

@GET("/user/{id}/photo")  
void listUsers(@Path("id") int id, Callback<Photo> cb);
Run Code Online (Sandbox Code Playgroud)

执行:

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);
Run Code Online (Sandbox Code Playgroud)

  • 我仍然完全没有得到如何实现Retrofit回调 (7认同)
  • @SeanPONeil你只需要setExecutors(),当你希望回调也发生在主线程之外时. (4认同)
  • 在创建restAdapter时不要忘记调用setExecutors(). (3认同)
  • @Alfie Hanssen:我对改造有一个noob查询.在成功方法中,o和Response之间有什么区别?我应该使用哪一个来获取服务器发送的JSON数据? (2认同)