RxJava与Retrofit封装简单的网络请求(二)
来源:互联网 发布:mac 安装java jdk 编辑:程序博客网 时间:2024/05/16 08:13
本文属于作者学习Rxjava的第二篇,进行了一些简单的封装。
Retrofit一款基于Android的网络请求框架,底层基于Okhttp,被谷歌官方认可,最好的解释。
RxJava在 GitHub 主页上的自我介绍是 “a library for composing asynchronous and event-based programs using observable sequences for the Java VM”(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库),我个人感觉在于异步的操作,切换线程的方便,以及代码逻辑的简单。在比较复杂的逻辑中,Rxjava的代码依然简单易懂。
接口
Retrofit调用网络请求需要封装出一个接口,采用Get方式请求网络,不同的是这里返回的是一个Observable对象,getLoginInfo登录方法,QueryMap 请求的键值对的设置。不懂得可以去看一下
Retrofit的基本用法,
public interface WorkerApis {public static String apis="接口请自己选择";@GET("接口")Observable<List<LoginBean>> getLoginInfo(@QueryMap HashMap<String,String> map);
}
Retrofit请求
addConverterFactory添加解析方式,addCallAdapterFactory与Rxjava进行关联,client设置一些OkhttpClient的网络请求参数设置,可以不设置
public Retrofit getRetrofit(){ retrofit=new Retrofit.Builder() .baseUrl(WorkerApis.apis) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(getOkHttpClient()) .build(); return retrofit;}public OkHttpClient getOkHttpClient(){ OkHttpClient okHttpClient=new OkHttpClient(); //设置超时时间 okHttpClient.newBuilder().connectTimeout(10, TimeUnit.SECONDS); return okHttpClient;}
网络请求
通过Rxjava的观察者模式可以很方便的切换线程,执行请求
workerApis=retrofitRequest.getRetrofit().create(WorkerApis.class); workerApis.getLoginInfo(map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(subscriber);
Activity中的请求
最后送上activity中的全部代码,很简单。
public class MainActivity extends AppCompatActivity {public RxJavaRequest rxJavaRequest;public Button button;public TextView textview;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rxJavaRequest=new RxJavaRequest(); button= (Button) findViewById(R.id.button); textview= (TextView) findViewById(R.id.textview); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HashMap<String,String> map=new HashMap<>(); map.put("j_username","**********"); map.put("j_password","******"); rxJavaRequest.getRequestDatas(map, new RxCallback<List<LoginBean>>() { @Override public void onSuccess(List<LoginBean> loginBeen) { textview.append("onSuccess"); textview.append("\n"); textview.append(loginBeen.get(0).getMessage()); } @Override public void onFails(Throwable t) { textview.append("onFails"); textview.append("\n"); } }); } });}}
想看代码的,可以直接点击:link text
阅读全文
0 0
- RxJava与Retrofit封装简单的网络请求(二)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- Retrofit与RxJava相结合的网络请求封装
- Retrofit+Rxjava 网络请求的完美封装(二)(观察者模式)
- Retrofit+Rxjava 网络请求的简单封装(一)(观察者模式)
- Retrofit+Rxjava简单的网络请求
- Android网络请求(二)retrofit+rxjava
- Retrofit + RxJava + OkHttp 让网络请求变的简单-封装篇
- Retrofit + RxJava + OkHttp 让网络请求变的简单-封装篇
- retrofit网络请求的简单封装使用
- retrofit+RxJava+okhttp简便封装实现网络请求(详解)
- RxJava+Retrofit网络请求终极封装
- 封装Retrofit + okhttp + rxjava网络请求框架
- RxJava与Retrofit的封装
- 简单的MVP+Retrofit+RxJava请求网络数据(一)
- Linux命令整理
- C程序设计入门级(一个菜鸟的自我救赎)
- 组件化研究01
- 第六章 访问权限控制
- 【学习】springmvc之基于构造器的依赖注入
- RxJava与Retrofit封装简单的网络请求(二)
- jvm
- Trac首页模板定制
- QT字符串中取数字
- JAVA创建对象的四种方式
- Replace Pioneer(中文名:替换先锋)是Mind Pioneer出品的一款共享软件
- Qt的Xml操作QDomDocument
- String.indexof
- mysql连接数