Android Retrofit+okHttp+RxJava 第一篇------Retrofit
2018-01-25 17:32
337 查看
前言
到这里发现自己已经还是写了一些东西了,然后发现在里面没得写过什么和网络有关的博客,于是准备一天写一篇,网络这方面的东西。现在Android这边最常用的就是retrofit+okhttp+rxjava,也是最热门的东西,然后最近就决定写一些这一系列的东西。然后今天呢先写一篇有关于Retrofit有关的吧。名言
流水在碰到底处时才会释放活力。
Retrofit简介
Retrofit是 Square 公司开源的适用于Android与Java的网络请求库,官方的介绍非常简短。底层基于OkHttp 实现。实例分析
这里还是从一个实例中来分析retrofit,就从聚合数据上拿新闻头条的内容吧。先来看看效果图
要用这个东西先来导2个包吧
前2个是retorfit的包,后面我这里处理图片用的是Glide,所以还需要导一个Glide的包
compile ‘com.squareup.retrofit2:retrofit:2.0.2’
compile ‘com.squareup.retrofit2:converter-gson:2.0.2’
compile ‘com.github.bumptech.glide:glide:3.5.2
主页面的布局就是Recycleview,这里我就不再写Recycleview的代码了可以看我以前的文章
点这个地方看recycleview的用法和写法
再看看结构
这个地方NewsBean是实体类(内容过多不贴出来了,可通过GsonFormat这个插件把json格式的数据装换成实体类)
NewsService是一个请求网络的接口(这里贴一下这个的代码)
//get请求 public interface NewsService { @GET("/toutiao/index") Call<NewsBean> getNews_G(@Query("key") String key); //post请求 @FormUrlEncoded @POST("/toutiao/index") Call<NewsBean> getNews_P(@Field("key") String key); }
这里是请求方式以及请求路径
@GET(“/toutiao/index”)
这里是请求的参数
Call getNews_G(@Query(“key”) String key);
然后给大家列出一些常用的注解
1、@Query、@QueryMap:用于Http Get请求传递参数
2、@Field:用于Post方式传递参数,需要在请求接口方法上添加@FormUrlEncoded,即以表单的方式传递参数
3、@Body:用于Post,根据转换方式将实例对象转化为对应字符串传递参数.比如Retrofit添加GsonConverterFactory则是将body转化为gson字符串进行传递
4、@Path:用于URL上占位符
5、@Part:配合@Multipart使用,一般用于文件上传
6、@Header:添加http header
7、@Headers:跟@Header作用一样,只是使用方式不一样,@Header是作为请求方法的参数传入,@Headers是以固定方式直接添加到请求方法上
初始化retrofit
String BASE_URL = "http://v.juhe.cn"; Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build();
上面为前一半路径加上接口里面的请求路径我们
4000
来看看是什么样的http://v.juhe.cn/toutiao/index?key=APPKEY是不是就成了一个完整的请求路径
得到接口里面的call异步处理回调
NewsService service = retrofit.create(NewsService.class); service.getNews_G(key).enqueue(new Callback<NewsBean>() { @Override public void onResponse(Call<NewsBean> call, Response<NewsBean> response) { NewsBean newsBean = response.body(); if (newsBean.getReason().equals("成功的返回")) { list.addAll(newsBean.getResult().getData()); if (list != null){ handler.sendEmptyMessage(1); } } } @Override public void onFailure(Call<NewsBean> call, Throwable t) { } });
onResponse表示请求成功
onFailure表示请求失败
MainActivity所有的代码
public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView = null; private MyAdapter adapter = null; private ArrayList<NewsBean.ResultBean.DataBean> list = null; private final String key = "你自己在聚合数据申请的key"; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 1){ //设置数据 adapter.setList(list); //刷新列表 adapter.notifyDataSetChanged(); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); list = new ArrayList<>(); setContentView(R.layout.activity_main); getNet(key); initView(); } public void initView() { recyclerView = (RecyclerView) findViewById(R.id.recycle); RecyclerView.LayoutManager manager = new LinearLayoutManager(this); recyclerView.setLayoutManager(manager); adapter = new MyAdapter(this); recyclerView.setAdapter(adapter); } public void getNet(String key) { //请求的前半路径 String BASE_URL = "http://v.juhe.cn"; Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); NewsService service = retrofit.create(NewsService.class); service.getNews_G(key).enqueue(new Callback<NewsBean>() { @Override public void onResponse(Call<NewsBean> call, Response<NewsBean> response) { NewsBean newsBean = response.body(); if (newsBean.getReason().equals("成功的返回")) { list.addAll(newsBean.getResult().getData()); if (list != null){ handler.sendEmptyMessage(1); } } } @Override public void onFailure(Call<NewsBean> call, Throwable t) { } }); } }
希望能够帮助到大家~~~~
下一篇准备写下retrofit+okhttp
相关文章推荐
- Android项目MVP模式框架+okhttp+rxjava+retrofit网络框架
- Android开发相关——Retrofit+RxJava+OkHttp(上)闲扯
- Android Http 标准框架,底层 OkHttp,与 RxJava 完美结合,比 Retrofit 更简单易用。
- 初学者--Android Retrofit+RxJava+OkHttp使用post请求
- Android Retrofit+okHttp+RxJava 第二篇------Retrofit+OkHttp
- Android——MVP+xRecyclerView+Retrofit+OkHttp+RxJava结合应用
- Android中的Retrofit+OkHttp+RxJava缓存架构使用
- Android Retrofit 2.0(二)使用教程OkHttp3 + Gson + RxJava
- Android网络请求发展简史和RxJava+Retrofit+OkHttp实践
- RxAndroid+RxJava+Gson+retrofit+okhttp初步搭建android网络请求框架
- Retrofit+RxJava+RxAndroid+OkHttp简单封装
- Android网络请求发展简史和RxJava+Retrofit+OkHttp实践
- Android RxJava+Retrofit+okhttp异步网络加载框架
- Android 封装Okhttp+Retrofit+RxJava,外加拦截器实例
- Retrofit 2.0,RxJava(Android), OkHttp3.3
- Android Retrofit+rxjava+okhttp请求网络的基本用法
- Android Material Design + MVP + Rxjava + Retrofit + Okhttp + Glide一个小项目
- Android RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- Android网络框架之Retrofit + RxJava + OkHttp
- Android MVP架构(RxJava+SQLBrite+Retrofit+OkHttp+Glide)