Skip to content

Commit

Permalink
移除 IRequestPath 接口
Browse files Browse the repository at this point in the history
优化和补充框架的使用文档
优化 Json 格式化的方式
优化框架中部分类命名和变量命名
优化框架日志打印的 TAG 和 LOG
优化 BodyRequest 类中的代码逻辑
优化 IRequestHandler 方法参数结构
优化 IRequestInterceptor 方法参数结构
修正使用 JSONObject 带来的斜杠转义问题
修复异常对象被修改之后没有打印原有异常的问题
修复下载时使用分区存储时出现文件读取失败的问题
修复使用空元素的 List 集合导致没有数据返回后台的问题
修复使用缓存策略 USE_CACHE_FIRST 出现泛型为空的问题
修复使用 SSL 来创建证书时可能导致出现的框架未初始化异常
  • Loading branch information
getActivity committed Nov 7, 2021
1 parent 4db8dec commit 87bd11b
Show file tree
Hide file tree
Showing 54 changed files with 1,355 additions and 1,160 deletions.
Binary file removed EasyHttp.apk
Binary file not shown.
340 changes: 195 additions & 145 deletions HelpDoc.md

Large diffs are not rendered by default.

19 changes: 11 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

* 博客地址:[网络请求,如斯优雅](https://www.jianshu.com/p/93cd59dec002)

* [点击此处下载Demo](EasyHttp.apk)
* [点击此处下载Demo](https://github.com/getActivity/EasyHttp/releases/download/10.5/EasyHttp.apk)

![](EasyHttp.jpg)
![](picture/demo_code.png)

* 另外对 OkHttp 原理感兴趣的同学推荐你看以下源码分析文章

Expand All @@ -22,6 +22,8 @@

* [OkHttp 精讲:CallServerInterceptor](https://www.jianshu.com/p/aa77af6251ff)

![](picture/demo_preview.jpg)

#### 集成步骤

* 在项目根目录下的 `build.gradle` 文件中加入
Expand Down Expand Up @@ -52,7 +54,7 @@ android {
dependencies {
// 网络请求框架:https://github.com/getActivity/EasyHttp
implementation 'com.github.getActivity:EasyHttp:10.2'
implementation 'com.github.getActivity:EasyHttp:10.5'
// OkHttp 框架:https://github.com/square/okhttp
// noinspection GradleDependency
implementation 'com.squareup.okhttp3:okhttp:3.12.13'
Expand All @@ -65,9 +67,9 @@ dependencies {

| 功能或细节 | [EasyHttp](https://github.com/getActivity/EasyHttp) | [Retrofit](https://github.com/square/retrofit) | [OkGo](https://github.com/jeasonlzy/okhttp-OkGo) |
| :----: | :------: | :-----: | :-----: |
| 对应版本 | 10.2 | 2.9.0 | 3.0.4 |
| 对应版本 | 10.5 | 2.9.0 | 3.0.4 |
| issues 数 | [![](https://img.shields.io/github/issues/getActivity/EasyHttp.svg)](https://github.com/getActivity/EasyHttp/issues) | [![](https://img.shields.io/github/issues/square/retrofit.svg)](https://github.com/square/retrofit/issues) | [![](https://img.shields.io/github/issues/jeasonlzy/okhttp-OkGo.svg)](https://github.com/jeasonlzy/okhttp-OkGo/issues) |
| **aar 包大小** | 76 KB | 123 KB | 131 KB |
| **aar 包大小** | 78 KB | 123 KB | 131 KB |
| minSdk 要求 | API 14+ | API 21+ | API 14+ |
| 配置多域名 ||||
| **动态 Host** ||||
Expand All @@ -77,13 +79,14 @@ dependencies {
| **请求缓存** ||||
| **下载校验** ||||
| **极速下载** ||||
| 批量上传文件 ||||
| 上传进度监听 ||||
| Json 参数提交 ||||
| Json 日志打印格式化 ||||
| **请求代码定位** ||||
| **延迟发起请求** ||||
| **分区存储适配** ||||
| 上传文件类型 | File / FileContentResolver <br> InputStream / RequestBody | RequestBody | File |
| 批量上传文件 ||||
| **请求生命周期** | 自动管控 | 需要封装 | 需要封装 |
| 参数传值方式 | 字段名 + 字段值 | 参数名 + 参数值 | 定义 Key + Value |
| 框架灵活性 ||||
Expand Down Expand Up @@ -180,9 +183,9 @@ public final class HttpLifecycleManager implements LifecycleEventObserver {

#### 代码定位功能介绍

* 框架会在日志打印中输出在网络请求的代码位置,这样开发者可以直接通过点击 Log 来定位代码是在哪个类哪行代码,这样可以极大提升我们排查问题的效率,特别是在请求一多且业务复杂的情况下,我相信没有一个人会拒绝这样的功能。
* 框架会在日志打印中输出在网络请求的代码位置,这样开发者可以直接通过点击 Log 来定位是在哪个类哪行代码,这样可以极大提升我们排查问题的效率,特别是在请求一多且业务复杂的情况下,我相信没有一个人会拒绝这样的功能。

![](RequestCode.png)
![](picture/request_code.png)

#### 延迟发起请求功能介绍

Expand Down
18 changes: 10 additions & 8 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
compileSdkVersion 30
compileSdkVersion 31

lintOptions {
abortOnError false
Expand All @@ -10,9 +12,9 @@ android {
defaultConfig {
applicationId 'com.hjq.easy.demo'
minSdkVersion 16
targetSdkVersion 30
versionCode 1020
versionName '10.2'
targetSdkVersion 31
versionCode 1050
versionName '10.5'
}

// 支持 JDK 1.8
Expand Down Expand Up @@ -69,24 +71,24 @@ dependencies {
implementation 'com.squareup.okhttp3:okhttp:3.12.13'

// 吐司框架:https://github.com/getActivity/ToastUtils
implementation 'com.github.getActivity:ToastUtils:9.5'
implementation 'com.github.getActivity:ToastUtils:9.6'

// 权限请求框架:https://github.com/getActivity/XXPermissions
implementation 'com.github.getActivity:XXPermissions:12.3'
implementation 'com.github.getActivity:XXPermissions:12.8'

// 标题栏框架:https://github.com/getActivity/TitleBar
implementation 'com.github.getActivity:TitleBar:9.2'

// Json 解析框架:https://github.com/google/gson
implementation 'com.google.code.gson:gson:2.8.8'
implementation 'com.google.code.gson:gson:2.8.9'
// Gson 解析容错:https://github.com/getActivity/GsonFactory
implementation 'com.github.getActivity:GsonFactory:5.2'

// 日志调试框架:https://github.com/getActivity/Logcat
debugImplementation 'com.github.getActivity:Logcat:9.9'

// 腾讯 MMKV:https://github.com/Tencent/MMKV
implementation 'com.tencent:mmkv-static:1.2.10'
implementation 'com.tencent:mmkv-static:1.2.11'

// 内存泄漏监测框架:https://github.com/square/leakcanary
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
Expand Down
117 changes: 61 additions & 56 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,57 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.hjq.easy.demo">

<!-- 联网权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 访问网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<!-- 外部存储读写权限 -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!-- 安装包的权限 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

<application
android:name=".AppApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:requestLegacyExternalStorage="true"
android:theme="@style/AppTheme"
tools:ignore="LockedOrientationActivity,UnusedAttribute"
tools:targetApi="n">

<!-- 适配 Android 7.0 文件意图 -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>

<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:launchMode="singleTop"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

</application>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.hjq.easy.demo">

<!-- 联网权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 访问网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<!-- 外部存储读写权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!-- 安装包的权限 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

<application
android:name=".AppApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme"
tools:ignore="LockedOrientationActivity,UnusedAttribute"
tools:targetApi="n">

<!-- 表示当前已经适配了分区存储 -->
<meta-data
android:name="ScopedStorage"
android:value="true" />

<!-- 适配 Android 7.0 文件意图 -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>

<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="true"
android:launchMode="singleTop"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

</application>

</manifest>
4 changes: 2 additions & 2 deletions app/src/main/java/com/hjq/easy/demo/AppApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
import com.hjq.easy.demo.http.server.ReleaseServer;
import com.hjq.easy.demo.http.server.TestServer;
import com.hjq.http.EasyConfig;
import com.hjq.http.config.IRequestApi;
import com.hjq.http.config.IRequestInterceptor;
import com.hjq.http.config.IRequestServer;
import com.hjq.http.model.HttpHeaders;
import com.hjq.http.model.HttpParams;
import com.hjq.http.request.HttpRequest;
import com.hjq.toast.ToastUtils;
import com.tencent.mmkv.MMKV;

Expand Down Expand Up @@ -51,7 +51,7 @@ public void onCreate() {
// 设置请求参数拦截器
.setInterceptor(new IRequestInterceptor() {
@Override
public void interceptArguments(IRequestApi api, HttpParams params, HttpHeaders headers) {
public void interceptArguments(HttpRequest<?> httpRequest, HttpParams params, HttpHeaders headers) {
headers.put("timestamp", String.valueOf(System.currentTimeMillis()));
}
})
Expand Down
Loading

0 comments on commit 87bd11b

Please sign in to comment.