解决Android网络请求崩溃:OkHttpUtils权限与Application配置指南
【免费下载链接】okhttputils [停止维护]okhttp的辅助类 项目地址: https://gitcode.com/gh_mirrors/ok/okhttputils
在Android开发中,网络请求失败往往源于基础配置问题。本文基于okhttputils项目的sample-okhttp示例,详细讲解如何通过正确配置AndroidManifest权限与Application类,避免90%的网络访问异常。
一、AndroidManifest权限配置
1.1 基础网络权限
网络请求必须声明的核心权限:
<uses-permission android:name="android.permission.INTERNET" />
该权限位于sample-okhttp/src/main/AndroidManifest.xml,允许应用建立网络连接。
1.2 文件读写权限
涉及文件上传/下载时需添加:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
示例配置见sample-okhttp的AndroidManifest,Android 6.0+需动态申请。
二、Application初始化最佳实践
2.1 自定义Application类
创建继承自Application的类,用于OkHttp客户端全局配置:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// OkHttp配置代码
}
}
完整实现见sample-okhttp/src/main/java/com/zhy/sample_okhttp/MyApplication.java。
2.2 OkHttp客户端配置
在Application中初始化OkHttpClient实例:
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(10000L, TimeUnit.MILLISECONDS)
.readTimeout(10000L, TimeUnit.MILLISECONDS)
.addInterceptor(new LoggerInterceptor("TAG"))
.cookieJar(cookieJar1)
.sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager)
.build();
OkHttpUtils.initClient(okHttpClient);
关键配置包括超时设置、日志拦截器(LoggerInterceptor)、Cookie管理和HTTPS支持。
2.3 清单文件注册
在AndroidManifest中注册自定义Application:
<application
android:name="com.zhy.sample_okhttp.MyApplication"
...>
</application>
配置位置见sample-okhttp的AndroidManifest。
三、HTTPS与Cookie高级配置
3.1 SSL证书配置
项目提供证书文件位于sample-okhttp/src/main/assets/,包括:
- srca.cer:证书文件
- zhy_client.bks:客户端证书库
- zhy_server.cer:服务器证书
3.2 Cookie持久化
使用PersistentCookieJar实现Cookie持久化:
ClearableCookieJar cookieJar = new PersistentCookieJar(
new SetCookieCache(),
new SharedPrefsCookiePersistor(getApplicationContext())
);
代码示例见MyApplication.java。
四、常见配置错误与解决方案
| 错误场景 | 解决方案 | 参考代码 |
|---|---|---|
| 网络请求无响应 | 添加INTERNET权限 | AndroidManifest.xml |
| Cookie丢失 | 使用PersistentCookieJar | MyApplication.java |
| HTTPS握手失败 | 配置SSL证书 | HttpsUtils |
五、完整配置文件示例
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zhy.sample_okhttp" >
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<application
android:name="com.zhy.sample_okhttp.MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.zhy.sample_okhttp.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
通过以上配置,可确保OkHttpUtils在各种网络环境下稳定工作。完整项目配置可参考okhttputils的官方示例代码。建议将配置代码封装为独立工具类,便于在多个项目中复用。
【免费下载链接】okhttputils [停止维护]okhttp的辅助类 项目地址: https://gitcode.com/gh_mirrors/ok/okhttputils
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



