代码改变世界

Retrofit 实践

2017-03-20 13:27  蓝之风  阅读(697)  评论(0编辑  收藏  举报

Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Java对象),POJO to JSON,网络请求(POST,GET,PUT,DELETE等)封装,对于网络调用的诸多细节做了封装,是的我们在开发过程中之关注对象的调用,而不关心网络请求的细节,是网络编程变得简单。是代码变得更加优雅易读。

1.包的获取与安装

Maven 配置

<dependency>
  <groupId>com.squareup.retrofit2</groupId>
  <artifactId>retrofit</artifactId>
  <version>2.2.0</version>
</dependency>
Gradle 配置
compile 'com.squareup.retrofit2:retrofit:2.2.0'
直接应用Jar包

2.初始化

 首先需要创建一个接口,然后配置注解
public interface APIClient {

    @GET("/api/movies")
    void movies(Callback<List<Movie>> callback);
}

3.配置Retrofit 的RestAdapter 使其生成代理类

OkHttpClient client = new OkHttpClient();
        mRestAdapter = new RestAdapter.Builder()
                .setEndpoint(baseUrl)
                .setClient(new OkClient(client))
                .build();

  myApiClient = mRestAdapter.create(APIClient.class);

这里client可以指定自己的配置实例,这里我选择的是OkClient, 当然你也可以配置其它的。上面这个配置是最简单的配置,当然你还可以配置一些转换器,来讲请求的Json 字符串转化成对象。

4. 调用

RetrofitdemoApplication.getInstance().myApiClient.movies(new Callback<List<Movie>>() {
            @Override
            public void success(List<Movie> moves, Response response) {
                mMovies=moves;
                mListView.setAdapter(new MovieAdapter(MovieActivity.this,moves));
                Response r=response;           
            }
            @Override
            public void failure(RetrofitError error) {               
                String s=error.getMessage();
                Toast.makeText(MovieActivity.this, "get data from API failuar",
                        Toast.LENGTH_LONG).show();
            }
        });

这个调用方法中有两个回掉,一个是失败时的回掉方法,另一个是成功时的回掉方法。