Retrofit+RxJava+Okhttp请求网络接口,Retrofit工具类二次封装,添加OkHttp日志拦截器和缓存
2019-04-21 20:18
323 查看
依赖
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0' implementation 'com.squareup.retrofit2:converter-gson:2.4.0' implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
不要忘记加网络权限
HttpListener
package com.indexmore.net; public interface HttpListener { void success(String data); void fail(String error); }
HttpService
package com.indexmore.net; import java.util.Map; import io.reactivex.Observable; import okhttp3.ResponseBody; import retrofit2.http.GET; import retrofit2.http.HeaderMap; import retrofit2.http.QueryMap; import retrofit2.http.Url; public interface HttpService { @GET Observable<ResponseBody> get(@Url String url, @HeaderMap Map<String, String> headMap, @QueryMap Map<String, String> map); }
HttpUtlis
package com.indexmore.net; import android.os.Environment; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import okhttp3.Cache; import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; /** * author:AbnerMing * date:2019/4/19 */ public class HttpUtlis { private String baseUrl = "http://172.17.8.100"; //传递头参 private Map<String, String> headMap = new HashMap<>(); public HttpUtlis setHead(Map<String, String> headMap) { this.headMap = headMap; return this; } //get请求 public HttpUtlis get(String url, Map<String, String> map) { File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()); long size = 1024 * 10; OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); return chain.proceed(request); } }).cache(new Cache(file, size)).build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .client(client) .build(); HttpService service = retrofit.create(HttpService.class); service.get(url, headMap, map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<ResponseBody>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(ResponseBody responseBody) { try { String data = responseBody.string();//返回的数据 mHttpListener.success(data); } catch (IOException e) { e.printStackTrace(); } } @Override public void onError(Throwable e) { String message = e.getMessage();//错误的信息 mHttpListener.fail(message); } @Override public void onComplete() { } }); return this; } private HttpListener mHttpListener; public void result(HttpListener mHttpListener) { this.mHttpListener = mHttpListener; } }
相关文章推荐
- 网络请求工具类之OkHttp3封装(支持缓存、日志、拦截器、断点下载、上传等)
- Retrofit + RxJava + OkHttp 让网络请求变的简单-封装篇
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- android 网络请求Retrofit+rxjava+okhttp 轻封装
- android RxJava+Retrofit2.0 OkHttp添加日志拦截器和设置请求头
- Retrofit + RxJava + OkHttp 让网络请求变的简单-封装篇
- Retrofit,OkHttp拦截器,RxJava封装请求网络
- Android RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- retrofit+RxJava+okhttp简便封装实现网络请求(详解)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- Retrofit和RxJava网络请求二次封装
- 使用Retrofit和Okhttp实现网络缓存。无网读缓存,有网根据过期时间重新请求
- RxAndroid+RxJava+Gson+retrofit+okhttp初步搭建android网络请求框架
- Android 使用RxJava+Retrofit +Realm 组合加载数据 <读取缓存 显示 请求网络数据 缓存最新数据 更新界面>(二)
- Retrofit + RxJava + OkHttp 让网络请求变的简单
- retrofit2+okhttp3+rxjava2 实现通用的网络缓存(针对单个接口)
- RxJava与Retrofit封装简单的网络请求(二)
- Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇