1、封装API(我这里只封装了两个方法)
public interface IApi {
//图片上传请求
@Multipart
@POST
Observable<RequestBody> postimagemore(@Url String url, @QueryMap Map<String, Object> map, @Part List<MultipartBody.Part> requestBody);
//常用 登录或上传请求
@POST
Observable<ResponseBody> postInfo(@Url String path, @QueryMap Map<String, Object> map);
}
2、网络工具类
public class NetUtils {
//私有化api接口
private IApi iApi;
//MMKV 存储 也可以使用sp存储
MMKV mmkv= MMKV.defaultMMKV();
//判断网络
public static boolean isNetWork(Context context){
ConnectivityManager manager= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo=manager.getActiveNetworkInfo();
if (networkInfo!=null&&networkInfo.isConnected()){
return true;
}
return false;
}
//创建 NetUtils 的一个对象
private static final class Holder{
private static NetUtils netUtils=new NetUtils();
}
//获取唯一可用的对象
public static NetUtils getInstance(){
return Holder.netUtils;
}
//单例
private NetUtils(){
//网络拦截器
HttpLoggingInterceptor interceptor=new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient=new OkHttpClient.Builder()
.readTimeout(5, TimeUnit.SECONDS)
.connectTimeout(5, TimeUnit.SECONDS)
.addInterceptor(interceptor)//添加拦截器
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request.Builder builder=chain.request().newBuilder();
int userId=mmkv.decodeInt("userId");
String sessionId=mmkv.decodeString("sessionId");
Log.e("userId",""+userId);
Log.e("sessionId",""+sessionId)<