Retrofit2+RxAndroid2进行简单的网络请求
来源:互联网 发布:db2和sqlserver 编辑:程序博客网 时间:2024/05/23 19:20
最近听说Retrofit2+RxAndroid2很火,所以简单的了解了下Retrofit2+RxAndroid2。
1:添加依赖
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
//compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'//retrofit现在只支持到rxjava1.XX
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'// 大神写的这个库可以支持到rxjava2.X
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
2:创建Retroft
public class RetrofitManager { private static ParentApi mParentApi = null; private static String mIp = Constant.ip; private static int mHost = Constant.port; private RetrofitManager(){} private static synchronized Retrofit getRetrofit(){ // Log信息拦截器 HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(); httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); //log打印级别,决定了log显示的详细程度 OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.addInterceptor(httpLoggingInterceptor); //超时时间设置,默认60秒 builder.readTimeout(60000, TimeUnit.MILLISECONDS); //全局的读取超时时间 builder.writeTimeout(60000, TimeUnit.MILLISECONDS); //全局的写入超时时间 builder.connectTimeout(60000, TimeUnit.MILLISECONDS); //全局的连接超时时间 //自动管理cookie(或者叫session的保持 builder.cookieJar(new CookieJar() { private final HashMap<HttpUrl, List<Cookie>> cookieStore = new HashMap<>(); @Override public void saveFromResponse(HttpUrl url, List<Cookie> cookies) { cookieStore.put(url, cookies); } @Override public List<Cookie> loadForRequest(HttpUrl url) { List<Cookie> cookies = cookieStore.get(url); return cookies != null ? cookies : new ArrayList<Cookie>(); } }); OkHttpClient client = builder.build(); return new Retrofit.Builder() .client(client) .baseUrl(String.format(Api.baseUrl, Constant.ip, Constant.port)) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build(); } public static synchronized ParentApi getApi(){ if(null == mParentApi){ mParentApi = getRetrofit().create(ParentApi.class); return mParentApi;
//这里是根据自己的逻辑写的,我用到的是IP跟port会动态改变的 } else if(!mIp.equals(Constant.ip) || mHost != Constant.port){ mIp = Constant.ip; mHost = Constant.port; mParentApi = getRetrofit().create(ParentApi.class); return mParentApi; } return mParentApi; }}
3:创建注解
public interface ParentApi { /*************************************************SSN**************************************************************/ @POST("your interface") Observable<SchoolBean> getAllRecorderStates(@Body Map<String,String> map);}
4:RxAndroid使用
Map<String,String> map = new HashMap<>();map.put("key", "value");map.put("key2", "value2");setLoadingState(LOAD_STATE.STATE_LOADING);Observable<SchoolBean> observable = RetrofitManager.getApi().getAllRecorderStates(map);observable.subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<SchoolBean>() { @Override public void onSubscribe(Disposable d) { //取消订阅 } @Override public void onNext(SchoolBean schoolBean) { //可实现自己的逻辑 } @Override public void onError(Throwable e) { setLoadingState(LOAD_STATE.STATE_EMPTY); } @Override public void onComplete() { } });
阅读全文
0 0
- Retrofit2+RxAndroid2进行简单的网络请求
- rxjava2+rxandroid2+retrofit2 封装网络请求
- Retrofit2.0 简单实现的网络请求
- Retrofit2+RxJava2进行网络请求
- Retrofit2.0+RxAndroid2.0实现网络下载
- 基于RxJava2+Retrofit2的简单易用网络请求框架
- 简单上手的Retrofit2+Rxjava2网络请求框架
- 简单实现RxJava2+Okhttp+Retrofit2的网络请求框架封装
- RxJava2和Retrofit2实现简单网络请求
- RxAndroid2 / RxJava2简单的CompletableObserver
- Retrofit2+Rxjava2网络请求框架的封装
- 网络请求--Retrofit2使用方法
- Android基于Retrofit2.0+RxJava的结合使用,让你的网络请求更简单
- RxEasyHttp一款基于RxJava2+Retrofit2实现简单易用的网络请求框架
- Retrofit2打印 网络请求日志
- RxJava+retrofit2实现网络请求
- <Retrofit2> 打印网络请求日志
- Retrofit2打印 网络请求日志
- Java集合框架介绍
- CCF CSP 201403-1 相反数
- Spring JDBC多批次操作
- apache lucene7.0几种常用的查询条件构造方式
- 值得收藏的HTML DOM事件和鼠标键盘事件
- Retrofit2+RxAndroid2进行简单的网络请求
- mysql索引使用解读
- Ajax(异步 JavaScript 和 XML)
- (培训)CMMI项目评估和技术团队效率提升实战培训笔记
- Android四大组件之Activity
- day11多态 接口 和instanceof
- accelerated c++ 0-2
- 判断字符串是否为回文字符串
- bzoj1711 [Usaco2007 Open]Dining吃饭(最大流/三分图匹配)