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    Observable
get(@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 BaseObserver
implements 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, Map
map, 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:GreenDao的简单使用
下一篇:百分比布局通过代码设置属性

发表评论

最新留言

很好
[***.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锁体系】CopyOnWriteArrayList是什么?线程安全的arraylist是哪个? 2019-04-26
【面试题目】Java设计模式你有哪些了解?说几个常用的。 2019-04-26
【计算机操作系统】常说的死锁是什么?死锁产生的必要条件是什么?死锁的解决策略是什么? 2019-04-26
【计算机操作系统】进程管理详解?进程与线程区别是什么?进程调度的算法有哪些?进程通信有哪些? 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