Retofit + RxJava 请求数据
来源:互联网 发布:网络图标不见了 编辑:程序博客网 时间:2024/05/17 07:49
这一篇文章给大家介绍现在非常火的一种网络请求数据的方式:Retofit + RxJava
前几篇介绍到了Retofit 和RxJava,现在就给大家直接上代码了,也是非常简单的。
具体使用
1.添加依赖
compile 'com.squareup.retrofit2:retrofit:2.0.2' // Retrofit库 compile 'com.squareup.okhttp3:okhttp:3.1.2' // Okhttp库 compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3' //gson解析器 compile 'io.reactivex:rxjava:1.0.14' compile 'io.reactivex:rxandroid:1.0.1' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2' //Retrofit支持Rxjava2.添加权限
<uses-permission android:name="android.permission.INTERNET"/>
3.实现代码:
MainActivity的xml文件:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="liuhao.baway.com.retrofitandrxjava.MainActivity"> <TextView android:id="@+id/textview" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示获取的数据" /></RelativeLayout>MainActivity页面的实现逻辑:
记住写代码的时候要时常注意,千万不要导错包,要不你会很不好找错。
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.textview); RetrofitUntils.getRetrofitUntils(this).get("106", new NetClickListener() { @Override public void Suesses(BaseBean baseBean) { if(baseBean.getCode().equals("0")){ tv.setText(baseBean.getMsg()); } } @Override public void Error(String msg) { Toast.makeText(MainActivity.this, msg,Toast.LENGTH_SHORT).show(); } }); }}请求网络所用到的网络请求数据的封装类,在这里我用到了单例模式,保证使用唯一的实例。
import android.content.Context;import okhttp3.OkHttpClient;import retrofit2.GsonConverterFactory;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import rx.Subscriber;import rx.android.schedulers.AndroidSchedulers;import rx.schedulers.Schedulers;/** * Created by 15218 on 2017/11/5. */public class RetrofitUntils { private static RetrofitUntils retrofitUntils; private Context context; private RetrofitUntils(Context context){ this.context = context ; } public static RetrofitUntils getRetrofitUntils(Context context){ if(retrofitUntils==null){ synchronized (RetrofitUntils.class){ if(retrofitUntils==null){ retrofitUntils = new RetrofitUntils(context); } } } return retrofitUntils ; } public void get(String uid, final NetClickListener netClickListener){ OkHttpClient.Builder ok = new OkHttpClient.Builder(); ok.addInterceptor(new LogInterceptor()); Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://120.27.23.105/")//这里的url与实现接口中的url拼接成一个完整的URL .client(ok.build()) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); retrofit.create(Retrofit_Interface.class).getBean(uid) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<BaseBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { if(netClickListener!=null){ netClickListener.Error(e.getMessage().toString()); } } @Override public void onNext(BaseBean baseBean) { if(baseBean.getCode().equals("0")){ if(netClickListener!=null){ netClickListener.Suesses(baseBean); } } } }); }}
请求对象的接口:
import retrofit2.http.GET;import retrofit2.http.Query;import rx.Observable;/** * Created by 15218 on 2017/11/5. */public interface Retrofit_Interface { @GET("product/getCarts")//在这里我们用到了Retrofit的get请求 Observable<BaseBean> getBean(@Query("uid") String uid);//正常网络请求用Call就可以了,但是我们是和Rxjava结合一起使用,所以使用被观察者对象}其它的回调接口,bean对象,log日志打印拦截器,都与上篇
OKHttp + RxJava的一样在这里就不一一展示了
其实这篇文字与上篇写的一样就是换了个请求网络的框架。好了,就写到这里,多多支持,谢谢大家!!!
阅读全文
2 0
- Retofit + RxJava 请求数据
- Rxjava+Retrofit 请求数据
- OKHttp + RxJava请求数据
- MVP+Rxjava请求数据
- RXjava加okhttp 请求请求网络数据
- RxJava结合ProgressDialog实现请求数据
- MVP+Rxjava+Okhttp+Retrofit+XRecyclerview请求数据
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- RxJava与Retrofit 结合请求后台数据并解析
- 简单的MVP+Retrofit+RxJava请求网络数据(一)
- Retrofit+RxJava+Fresco图片加载框 请求网络数据
- MVP框架使用Retrofit+Rxjava请求网络数据
- MVP+retrofit和Rxjava请求数据+recyclerview展示
- MVP和Retrofit+Rxjava+OkHttp封装结合请求数据
- MVP结合RecycleView,利用retrofit与RxJava简单请求数据
- rxjava,okhttp 合并请求
- RxJava处理嵌套请求
- RXJava+Retrofit网络请求
- 同余定理
- xml教程
- poj 2065 SETI(高斯消元)
- EXT的初步搭建
- SpringSeed 一个令人惊奇的Linux替代
- Retofit + RxJava 请求数据
- Android 当中的 MVP 模式(二)封装
- 一台电脑同时运行多个jdk
- jQuery.Ajax下载文件
- java多线程管理 concurrent包用法详解
- 求一个三位整数的个位、十位、百位之和
- Android当中的MVP模式(三)基于分页列表的封装
- 动态规划专栏(3)-背包问题(1)
- web开发之防止表单重复提交