HttpBox-网络框架自由切换

先贴个地址,跟大家乞讨一点start哈!
github: https://github.com/weiwei00200/HttpBox

介绍

HttpBox是一款支持各种网络请求框架的切换,目前正在扩展中,现已支持OkHttp和xUtils的切换。

PS:这只是一种写法,还没提升到当做库来使用的阶段,因为没人愿意加入了这个库,但是又只使用了里面其中一种网络框架,这样感觉非常浪费资源,安装包多少会大一些。这个库目前只是提供出来大家学习学习。有更好的想法的可以issue提出来哦。
提供了以下功能:post,get,download,upload(带参数和不带参数)。

配置

步骤1:
implementation 'com.github.weiwei00200:HttpBox:1.0.0'
步骤2:
allprojects {
   repositories {
      maven { url "https://jitpack.io" }
   }
}
初始化

在Application的onCreate中加入以下代码

1.切换OkHttp框架
HttpUtils.initHttpRequest(new OkHttpRequest(
    new HttpConfig.HttpConfigBuilder()
            .baseUrl(baseUrl)
            .timeout(15000)
            .retryOnFail(true)
            .builder()));//使用OkHttp
2.切换OkHttp框架
HttpUtils.initHttpRequest(new XUtilRequest(this,
     new HttpConfig.HttpConfigBuilder()
             .baseUrl(baseUrl)
             .timeout(15000)
             .retryOnFail(true)
             .builder()));//使用XUtil
2.当然,你也可以参照OkHttpRequest或者XUtilRequest去定义自己的其他网络请求框架,然后自己扩展。
Get请求
HttpUtils.with(AdResponse.class)
            .get()
            .url("/api/v1/advert/school")
            .cache(false)
            .execute(new IHttpCallBack<AdResponse>() {
                @Override
                public void onSuccess(AdResponse adResponse) {
                    showToast(adResponse.getMsg());
                }

                @Override
                public void onFailed(String errorMsg) {
                    showToast(errorMsg);
                }

                @Override
                public void onComplete() {

                }
            });
Post请求
HttpUtils.with(RegisterResponse.class)
            .post()
            .url("/api/v1/auth/register")
            .param("phone", "15913901399")
            .param("password", "qqqqqq")
            .param("code", "123456")
            .cache(false)
            .execute(new IHttpCallBack<RegisterResponse>() {
                @Override
                public void onSuccess(RegisterResponse registerResponse) {
                    showToast(registerResponse.getMsg());
                }

                @Override
                public void onFailed(String errorMsg) {
                    showToast(errorMsg);
                }

                @Override
                public void onComplete() {

                }
            });
Download文件
HttpUtils.with()
            .url("http://shouji.360tpcdn.com/180503/78ef176d24b7de2272bf8d88e9da5035/com.qihoo360.mobilesafe_260.apk")
            .downloadFileSavePath(getSDPath() + "/")
            .downloadFileName("360.apk")
            .download(new IHttpDownloadCallBack() {

                @Override
                public void process(int progress) {
                    progressBar.setProgress(progress);
                }

                @Override
                public void onStartDownload() {
                    showToast("开始下载");
                }

                @Override
                public void onDownloadSuccessful(String path) {

                }

                @Override
                public void onDownloadFailed() {
                    showToast("下载失败");
                }

                @Override
                public void onFinish() {
                    showToast("下载完成");
                }
            });
Upload文件(不带参数)
HttpUtils.with()
            .url("http://xxxxxxx")
            .uploadFilePath(getSDPath() + "/360.apk")
            .upload(new IHttpUploadCallBack() {

                @Override
                public void onStartUpload() {
                    showToast("开始上传");
                }

                @Override
                public void onUploadFailed() {
                    showToast("上传失败");
                }

                @Override
                public void onUploadSuccessful() {
                    showToast("上传成功");
                }

                @Override
                public void onFinish() {
                    showToast("上传完成");
                }
            });
Upload文件(带参数)
HttpUtils.with()
            .url("http://xxxxxxx")
            .param("userName", "Sammie")
            .param("file", new File(getSDPath() + "/360.apk"))
            .upload(new IHttpUploadCallBack() {

                @Override
                public void onStartUpload() {
                    showToast("开始上传");
                }

                @Override
                public void onUploadFailed() {
                    showToast("上传失败");
                }

                @Override
                public void onUploadSuccessful() {
                    showToast("上传成功");
                }

                @Override
                public void onFinish() {
                    showToast("上传完成");
                }
            });
混淆
################### region for xUtils
-keepattributes Signature,*Annotation*
-keep public class org.xutils.** {
    public protected *;
}
-keep public interface org.xutils.** {
    public protected *;
}
-keepclassmembers class * extends org.xutils.** {
    public protected *;
}
-keepclassmembers @org.xutils.db.annotation.* class * {*;}
-keepclassmembers @org.xutils.http.annotation.* class * {*;}
-keepclassmembers class * {
    @org.xutils.view.annotation.Event <methods>;
}
#################### end region

################### region for OkHttp
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn javax.annotation.**
-dontwarn org.conscrypt.**
# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
#################### end region
简介: 本框架是在Netroid的基础之上进行了封装,节省了其中配置的过程和一些不必要的操作 主要进行文本请求和图片请求,图片请求都进行了缓存(内存缓存和sd卡缓存)的封装,sd卡缓存时间可自行更改. 文本请求可传入解析的泛型clazz,即可返回解析后的clazz对象进行数据 操作,如果不需要进行数据解析,可通过另一种方式获取原生的string; 单图请求,单图请求可执行对本地asset文件夹,sd卡,http三种请求模式.只需传入相应的路径即可; 多图请求,多图请求主要是针对listview这种图文混排模式而生,能快速加载图片并实现缓存,不需要考虑 图片错位问题.只需传入相应的url即可完成全部功能. 使用说明: 1:在新创建的Manifest.xml中application中申明: <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:name="com.aqs.application.UApplication" > 并初始化Const.init();此处的初始化主要是对内存缓存,SD卡缓存大小,缓存时间等进行设置,如果不初始化,则按使用默认配置; 2:依赖HttpAqs-library或者jar包 3:通过公有方法进行网络请求,示例如下: >文本请求: >解析后的文本请求: HttpRequest.reqquest(int,String,Parse,Class){....}; >原生string文本请求: HttpRequest.getString(String,AqsString){...} >单张图片请求: HttpRequest.setImage(ImageView,String,int,int){...} >多张图片请求: 可使用AQSImageView控件来加载图片;特别是针对listview图文混排 实现方法: >在布局中添加 >在代码中 av.setImageUrl(url);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SammieZhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值