解决Android网络请求崩溃:OkHttpUtils权限与Application配置指南

解决Android网络请求崩溃:OkHttpUtils权限与Application配置指南

【免费下载链接】okhttputils [停止维护]okhttp的辅助类 【免费下载链接】okhttputils 项目地址: 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丢失使用PersistentCookieJarMyApplication.java
HTTPS握手失败配置SSL证书HttpsUtils

五、完整配置文件示例

官方示例AndroidManifest.xml完整内容:

<?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的辅助类 【免费下载链接】okhttputils 项目地址: https://gitcode.com/gh_mirrors/ok/okhttputils

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

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

抵扣说明:

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

余额充值