3行代码搞定网络请求:okhttputils让Android开发效率提升10倍
【免费下载链接】okhttputils [停止维护]okhttp的辅助类 项目地址: 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关联请求与生命周期,避免内存泄漏。
项目资源导航
- 官方文档:README.md
- 核心实现:OkHttpUtils.java
- 示例代码:sample-okhttp/
- 构建工具:gradle/
掌握这些技巧能让你在Android网络开发中事半功倍。okhttputils虽然已停止维护,但核心设计思想和封装模式值得学习。建议生产环境考虑结合Retrofit使用,获取更强大的类型安全支持。收藏本文,下次处理网络请求时直接套用模板代码!
【免费下载链接】okhttputils [停止维护]okhttp的辅助类 项目地址: https://gitcode.com/gh_mirrors/ok/okhttputils
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



