Retrofit和RxJava加OkHttp网络请求进行二次封装
来源:互联网 发布:天下3鬼墨女捏脸数据 编辑:程序博客网 时间:2024/05/21 17:57
package com.baway.zhengwenjie20171104.net;import android.util.Log;import java.util.concurrent.TimeUnit;import okhttp3.OkHttpClient;import okhttp3.logging.HttpLoggingInterceptor;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;/** * Created by zwj on 2017/11/4. */public class RetrofitUtil { private static RetrofitUtil retrofitUtil; private RetrofitUtil() { } public static RetrofitUtil getInstance() { if (retrofitUtil == null) { synchronized (RetrofitUtil.class) { if (retrofitUtil == null) { retrofitUtil = new RetrofitUtil(); } } } return retrofitUtil; } private static Retrofit retrofit; public static synchronized Retrofit getRetrofit(String url) { HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { @Override public void log(String message) { Log.i("xxx", message); } }); httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(httpLoggingInterceptor).connectTimeout(3000, TimeUnit.SECONDS).build(); if (retrofit == null) { retrofit = new Retrofit.Builder() .client(okHttpClient) .baseUrl(url) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); } return retrofit; } public <T> T getApiService(String url, Class<T> cl) { Retrofit retrofit = getRetrofit(url); return retrofit.create(cl); }}
----------ApiService接口---------------------
package com.bewei.retrofitandrxjava.inter;import com.bewei.retrofitandrxjava.bean.News;import com.bewei.retrofitandrxjava.bean.User;import retrofit2.http.GET;import retrofit2.http.Path;import rx.Observable;/** * 1. 类的用途 * 2. @author forever * 3. @date 2017/11/3 10:13 */public interface ApiService { /** * 结合Retrofit+RxJava * thtp://service.meiyinkeqiu.com/service/ads/cptj * @param * @return */ @GET("ads/cptj") Observable<News> getNoParams(); /** * 结合RxJava * @param user * @return * https://api.github.com/users/forever/ */ @GET("users/{user}") Observable<User> getHasParams(@Path("user")String user);}
---------------ApiServive接口不加RxJava(参数拼接参考)--------------
package com.bewei.retrofit.inter;import com.bewei.retrofit.R;import com.bewei.retrofit.bean.News;import com.bewei.retrofit.bean.Party;import com.bewei.retrofit.bean.User;import okhttp3.MultipartBody;import okhttp3.RequestBody;import retrofit2.Call;import retrofit2.http.Field;import retrofit2.http.FormUrlEncoded;import retrofit2.http.GET;import retrofit2.http.Multipart;import retrofit2.http.POST;import retrofit2.http.Part;import retrofit2.http.Path;import retrofit2.http.Query;/** * 1. 类的用途 网络接口 * 2. @author forever * 3. @date 2017/11/1 14:32 */public interface ApiService { /** * 无参get请求 * http://service.meiyinkeqiu.com/service/ads/cptj * * @return */ @GET("service/ads/cptj") Call<News> getNoParams(); /** * 有参get请求 * 拼接参数 /形式 * * @return https://api.github.com/users/baiiu */ @GET("users/{user}") Call<User> getHasParams(@Path("user") String user); /** * http://www.93.gov.cn/93app/data.do * channelId * startNum * 拼接 ? & * 为主 */ @GET("data.do") Call<Party> getHasParams2(@Query("channelId")int channelId, @Query("startNum") int startNum ); /** * post请求 http://120.27.23.105/user/reg 注册 */ @POST("reg") @FormUrlEncoded//支持表单提交 Call<User> register(@Field("mobile")String mobile,@Field("password")String password); /** * 上传图片 参数只有一个 File * @param * @param file * @return */ @Multipart @POST("08web/FileUploadServlet") Call<User> uploadPic( @Part MultipartBody.Part file); /** * 上传图片 参数有2个 uid file * @param * @param file * @return */ @Multipart @POST("file/upload") Call<User> uploadPic2(@Part("uid")RequestBody uid, @Part MultipartBody.Part file);}
--------------进行网络请求Model--------------------
public void getData(final OnFinish onFinish, String lx, String page) { ApiService apiService = RetrofitUtil.getInstance().getApiService(Api.XW, ApiService.class); Observable<List<JavaBean>> observable = apiService.getHasParams(lx,page); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<List<JavaBean>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(List<JavaBean> javaBeen) { onFinish.onSuccess(javaBeen); } });}
阅读全文
0 0
- Retrofit和RxJava加OkHttp网络请求进行二次封装
- 封装Retrofit + okhttp + rxjava网络请求框架
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- retrofit+RxJava+okhttp简便封装实现网络请求(详解)
- MVP和Retrofit+Rxjava+OkHttp封装结合请求数据
- okHttp网络请求二次封装
- Android网络请求发展简史和RxJava+Retrofit+OkHttp实践
- Android网络请求发展简史和RxJava+Retrofit+OkHttp实践
- RxJava + Retrofit + OKHttp + RxLifecycle进一步封装网络
- retrofit+RXjava二次封装
- 网络请求框架 Rxjava+ReTrofit+okHttp+MVP
- rxjava+Retrofit+okhttp 实战网络请求
- Retrofit和OkHttp简单的二次封装
- 封装RxJava+Retrofit+OkHttp
- RXjava加okhttp 请求请求网络数据
- Nginx简介
- 总结
- java的基本算法
- 排序2
- Android摇动传感器
- Retrofit和RxJava加OkHttp网络请求进行二次封装
- Foundations of streaming SQL
- Android_扫描二维码
- 组合View-标题栏自绘控件圆形进度条/扫描二维码/自定义ViewGroup阶梯布局
- 深入剖析串口通信数据格式
- 控件操作类
- 一起来学习Mybatis(一)-入门
- display:inline-block,block,inline的区别与用法
- 软工视频总结