欢迎访问企业官网建站公司网站,拥有丰富的建站经验,快速智能且精美!

企业官网建站公司

自助建站官网平台建设,公司自助官网建站定制

Retrofit&&RXJava傻瓜式入门(上)

作者:jcmp      发布时间:2021-04-19      浏览量:0
ps:本文仅适合不了解Retrofit&

ps:本文仅适合不了解Retrofit&&RXJava的初学者 既然是傻瓜式入门,我们就讲得尽量最简洁最白化,不带任何官话。 嘴哥说得好,一篇没有gif的文章不是一篇好文章,那我们先来看一下本文主要实现的效果(通过网络请求获取豆瓣提供的电影title和imageuri,简单显示):

一、什么是Retrofit?

compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.retrofit2:converter-gson:2.1.0' compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:1.1.0'

二、怎么简单使用Retrofit?

根据 Retrofit官网 的介绍文档,我们在使用Retrofit前,只需要简单的三步即可。 这里以获取豆瓣电影信息为例:

public interface DoubanAPI { @GET("v2/movie/us_box") Call getUSMovie();}

注解@GET标识为get请求方式(还有POST, PUT, DELETE, and HEAD),@GET中所填写的"v2/movie/us_box"是完整httpurl中的一部分,即为我们从网络端请求返回解析后的数据bean,可以通过很多插件工具自动生成。

retrofit=new Retrofit.Builder().baseUrl("https://api.douban.com/") .addConverterFactory(GsonConverterFactory.create()) //.addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(new OkHttpClient.Builder().connectTimeout(5, TimeUnit.SECONDS).build()).build(); doubanService=retrofit.create(DoubanAPI.class);

这里的baseUrl就可以与第一步中的"v2/movie/us_box"组成一个完整的url路径" https://api.douban.com/v2/movie/us_box " ,建议baseUrl以"/"结尾,而@GET()中的不以"/"开头或结尾。 addConverterFactory(GsonConverterFactory.create())表示将服务端返回的json数据通过GsonConverterFactory完成解析转化。 addCallAdapterFactory(RxJavaCallAdapterFactory.create())就是RXJava与Retrofit结合的部分了,此处先不用加这句话。

Call result=doubanService.getUSMovie();result.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { Toast.makeText(MainActivity.this,"Call Back Success",Toast.LENGTH_SHORT).show(); Log.e("***", "normalGet:" + response.body().toString() + ""); Movieinfo bean = (Movieinfo) response.body(); Log.e("***","beanAnal:"+bean.date); Log.e("***","beanAnal:"+bean.title); } @Override public void onFailure(Call call, Throwable t) { Toast.makeText(MainActivity.this,"Call Back Failed",Toast.LENGTH_SHORT).show(); } });

我们也可以将上述步骤简单封装成一个util。类似于

public class RetrofitUtil { private Retrofit retrofit; private DoubanAPI doubanService; private static RetrofitUtil instance; private RetrofitUtil() { retrofit=new Retrofit.Builder().baseUrl("https://api.douban.com/") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(new OkHttpClient.Builder().connectTimeout(5, TimeUnit.SECONDS).build()) .build(); doubanService=retrofit.create(DoubanAPI.class); } //singleton public static RetrofitUtil getInstance(){ if (instance == null) { synchronized (RetrofitUtil.class){ if (instance == null) { instance=new RetrofitUtil(); } } } return instance; } public void getUSMovie (Subscriber subscriber){ doubanService.getUSMovie().subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(subscriber); }}

好,关于Retrofit的简单使用就先到这,想详细了解的话可以参考 鸿洋大神的Retrofit2完全解析 下篇将会采用傻瓜式的方法讲解如何使用RXJava及Retrofit与RXJava的结合使用! Retrofit&&RXJava傻瓜式入门(下) 已更新~