Retrofit+RxJava 的结合使用
发布日期:2022-02-26 14:49:31
浏览次数:39
分类:技术文章
本文共 4328 字,大约阅读时间需要 14 分钟。
这里只是简单的说一下 他们的用法 具体的原理不做解释因为我也不会
1.首先导入retrofit的依赖
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
最新版本地址:
2.rxjava
第二个依赖 retrofit 对 rxjava2的适配的一个依赖 这样就可已使用rxjava2 了 而不是直接去rxjava的官网上找依赖 那样运行的时候会报错的
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.4'
最新版本地址:
前面是retrofit 对 rxjava2的适配 后面是rxjava的最新版本
3.之后在项目中创建一个接口 ~不要想这是干甚么用的到后面 你大概就知道了 应该
package com.bwie.test1126002.net;import java.util.Map;import io.reactivex.Observable;import okhttp3.ResponseBody;import retrofit2.http.GET;import retrofit2.http.POST;import retrofit2.http.QueryMap;import retrofit2.http.Url;public interface BaseService { @GET Observableget(@Url String url, @QueryMap Map map); @POST Observable post(@Url String url, @QueryMap Map map);}
4.
package com.bwie.text1126.net;import io.reactivex.Observer;import io.reactivex.disposables.Disposable;public abstract class BaseObserverimplements Observer { @Override public void onSubscribe(Disposable d) { } @Override public abstract void onNext(T t); @Override public abstract void onError(Throwable e); @Override public void onComplete() { }}
5.
implementation 'com.squareup.retrofit2:converter-gson:2.4.0' implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
最新版本地址:
6.
package com.bwie.test1126002.net;import java.util.HashMap;import java.util.Map;import io.reactivex.Observer;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.schedulers.Schedulers;import retrofit2.Retrofit;import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;public class HttpHelper { private static HttpHelper ourInstance; private Retrofit retrofit; private HttpHelper() { } public static HttpHelper getInstance() { if(ourInstance==null){ synchronized (HttpHelper.class){ ourInstance=new HttpHelper(); } } return ourInstance; } public void init(String baseUrl){ retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build(); } public void doGet(String url, Mapmap, Observer observer){ if(map==null){ map=new HashMap<>(); } retrofit.create(BaseService.class) .get(url,map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); } public void doPost(String url, Map map, Observer observer){ if(map==null){ map=new HashMap<>(); } retrofit.create(BaseService.class) .post(url,map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); }}
7.
package com.bwie.test1126002.app;import android.app.Application;import com.bwie.test1126002.net.HttpHelper;public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); HttpHelper.getInstance().init("http://www.zhaoapi.cn/"); }}
记得在清单文件里注册
8.
package com.bwie.test1126002;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import com.bwie.test1126002.net.BaseObserver;import com.bwie.test1126002.net.HttpHelper;import java.io.IOException;import okhttp3.ResponseBody;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); HttpHelper.getInstance().doGet("/ad/getAd", null, new BaseObserver() { @Override public void onNext(ResponseBody value) { try { Log.i("main", "onNext: " + value.string()); } catch (IOException e) { e.printStackTrace(); } } @Override public void onError(Throwable e) { Log.i("main", "onError: " + e.getMessage()); } }); }}
记得加网络权限
转载地址:https://blog.csdn.net/qq_31353347/article/details/84554601 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年03月24日 08时51分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【大话Mysql面试】-Mysql常见面试题目
2019-04-26
08 【多线程高并发】Java线程间通信的方式
2019-04-26
【数据结构与算法】什么是跳表?通俗易懂来理解跳表
2019-04-26
【数据结构与算法】什么是图?图是什么?快速带你回顾图有关的知识点
2019-04-26
【数据结构与算法】什么是串?什么是KMP算法?字符串匹配是什么?
2019-04-26
【数据结构与算法】什么是布隆过滤器?如何防止缓存穿透的问题?
2019-04-26
【面试题目】Java设计模式你有哪些了解?说几个常用的。
2019-04-26
【计算机操作系统】常说的死锁是什么?死锁产生的必要条件是什么?死锁的解决策略是什么?
2019-04-26
【计算机操作系统】设备管理?磁盘结构是怎么样的?磁盘调度算法有哪些?
2019-04-26
【多线程高并发】为什么要使用多线程?创建多少个线程合适呢?
2019-04-26
【多线程与高并发】 Java两个线程轮流打印1-100两个数?多线程轮流打印数字?
2019-04-26
【Java设计者模式】-Java实现订阅-发布者模式
2019-04-26
盒模型之border实践--三角形
2019-04-26
Python语言开发工具
2019-04-26
Robots协议
2019-04-26
Python网络爬虫的网站实例
2019-04-26
h标签与p标签
2019-04-26