3行代码搞定网络请求:okhttputils让Android开发效率提升10倍

3行代码搞定网络请求:okhttputils让Android开发效率提升10倍

【免费下载链接】okhttputils [停止维护]okhttp的辅助类 【免费下载链接】okhttputils 项目地址: https://gitcode.com/gh_mirrors/ok/okhttputils

你还在为Android网络请求写几十行样板代码?还在处理复杂的异步回调和线程切换?okhttputils作为OkHttp的增强工具类,通过Builder模式将网络请求简化到极致。本文将带你掌握GET/POST核心用法,解决Cookie管理、HTTPS配置等实战痛点,附赠完整示例代码和混淆规则。

项目快速上手

引入依赖

通过Gradle集成只需在build.gradle添加:

compile 'com.zhy:okhttputils:2.6.2'

或直接下载okhttputils-2_6_2.jar手动导入。

初始化配置

在Application中完成全局配置,建议在MyApplication.java中实现:

OkHttpClient okHttpClient = new OkHttpClient.Builder()
    .connectTimeout(10000L, TimeUnit.MILLISECONDS)
    .readTimeout(10000L, TimeUnit.MILLISECONDS)
    .cookieJar(new CookieJarImpl(new PersistentCookieStore(getApplicationContext())))
    .addInterceptor(new LoggerInterceptor("TAG"))
    .build();
OkHttpUtils.initClient(okHttpClient);

配置项包含超时设置、Cookie持久化PersistentCookieStore和日志拦截器LoggerInterceptor

GET请求实战

基础用法

3行核心代码实现带参数的GET请求:

OkHttpUtils
    .get()
    .url("http://www.example.com/api")
    .addParams("username", "hyman")
    .addParams("password", "123")
    .build()
    .execute(new StringCallback() {
        @Override
        public void onError(Request request, Exception e) {}
        
        @Override
        public void onResponse(String response) {}
    });

完整示例见MainActivity.java

自定义回调

通过继承Callback实现实体类自动解析:

public abstract class UserCallback extends Callback<User> {
    @Override
    public User parseNetworkResponse(Response response) throws IOException {
        return new Gson().fromJson(response.body().string(), User.class);
    }
}

使用时直接获取User对象,避免重复JSON解析代码。

POST请求全场景

表单提交

模拟表单提交用户信息:

OkHttpUtils
    .post()
    .url(url)
    .addParams("username", "hyman")
    .addParams("password", "123")
    .build()
    .execute(callback);

对应PostFormBuilder实现。

JSON提交

发送JSON格式数据:

OkHttpUtils
    .postString()
    .url(url)
    .content(new Gson().toJson(new User("zhy", "123")))
    .mediaType(MediaType.parse("application/json; charset=utf-8"))
    .build()
    .execute(new MyStringCallback());

注意必须通过mediaType()方法设置JSON格式,而非addHeader。

文件上传

支持多文件上传的表单提交:

OkHttpUtils.post()
    .addFile("avatar", "head.jpg", new File("/sdcard/head.jpg"))
    .addFile("doc", "resume.pdf", new File("/sdcard/resume.pdf"))
    .url(uploadUrl)
    .build()
    .execute(new MyStringCallback());

文件参数通过PostFormRequest处理。

高级功能配置

Cookie持久化

通过CookieJar实现Session保持:

CookieJarImpl cookieJar = new CookieJarImpl(new PersistentCookieStore(context));
OkHttpClient okHttpClient = new OkHttpClient.Builder()
    .cookieJar(cookieJar)
    .build();

提供内存存储MemoryCookieStore和持久化存储两种实现。

HTTPS证书配置

支持三种HTTPS场景配置:

// 信任所有证书
HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory(null, null, null);

// 单向认证
sslParams = HttpsUtils.getSslSocketFactory(getAssets().open("server.cer"), null, null);

// 双向认证
sslParams = HttpsUtils.getSslSocketFactory(
    getAssets().open("server.cer"),
    getAssets().open("client.p12"),
    "password");

证书文件存放于sample-okhttp/src/main/assets/目录。

实用工具类

图片加载

直接获取Bitmap对象:

OkHttpUtils
    .get()
    .url(imageUrl)
    .build()
    .execute(new BitmapCallback() {
        @Override
        public void onResponse(Bitmap bitmap) {
            imageView.setImageBitmap(bitmap);
        }
    });

内部使用ImageUtils处理图片压缩。

下载文件

带进度回调的文件下载:

OkHttpUtils
    .get()
    .url(downloadUrl)
    .build()
    .execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), "gson.jar") {
        @Override
        public void inProgress(float progress) {
            progressBar.setProgress((int)(progress*100));
        }
        
        @Override
        public void onResponse(File file) {}
    });

进度更新通过CountingRequestBody实现。

项目实战必备

混淆配置

ProGuard规则确保反射和网络类不被混淆:

#okhttputils
-dontwarn com.zhy.http.**
-keep class com.zhy.http.**{*;}

#okhttp
-dontwarn okhttp3.**
-keep class okhttp3.**{*;}

#okio
-dontwarn okio.**
-keep class okio.**{*;}

完整规则见proguard-rules.pro

请求取消

Activity销毁时取消所有请求:

@Override
protected void onDestroy() {
    super.onDestroy();
    OkHttpUtils.cancelTag(this);
}

通过tag关联请求与生命周期,避免内存泄漏。

项目资源导航

掌握这些技巧能让你在Android网络开发中事半功倍。okhttputils虽然已停止维护,但核心设计思想和封装模式值得学习。建议生产环境考虑结合Retrofit使用,获取更强大的类型安全支持。收藏本文,下次处理网络请求时直接套用模板代码!

【免费下载链接】okhttputils [停止维护]okhttp的辅助类 【免费下载链接】okhttputils 项目地址: https://gitcode.com/gh_mirrors/ok/okhttputils

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值