# MyOkhttp
[![License](https://img.shields.io/badge/license-Apache%202-green.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![Download](https://api.bintray.com/packages/tangsiyuan/maven/myokhttp/images/download.svg) ](https://bintray.com/tangsiyuan/maven/myokhttp/_latestVersion)
> 对Okhttp3进行二次封装,对外提供了POST请求、GET请求、PATCH请求、PUT请求、DELETE请求、上传文件、下载文件、取消请求、Raw/Json/Gson返回、后台下载管理等功能.
## 版本更新记录
[版本更新记录](https://github.com/tsy12321/MyOkHttp/releases)
## 文章推荐
对于Okhttp3的封装参考了:
1. [https://github.com/hongyangAndroid/okhttputils](https://github.com/hongyangAndroid/okhttputils)
1. [https://github.com/ZhaoKaiQiang/OkHttpPlus](https://github.com/ZhaoKaiQiang/OkHttpPlus)
## 如何添加
### 在app目录下的build.gradle中添加依赖
```gradle
compile 'com.tsy:myokhttp:1.1.1'
```
## 1 总体简介
在项目入口创建唯一MyOkhttp实例
```java
MyOkHttp mMyOkhttp = new MyOkHttp();
```
也可以自行配置OkhttpClient.
```java
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(10000L, TimeUnit.MILLISECONDS)
.readTimeout(10000L, TimeUnit.MILLISECONDS)
//其他配置
.build();
MyOkHttp mMyOkhttp = new MyOkHttp(okHttpClient);
```
### 1.1 调用方式
整个调用采用链式调用的方式. 方便以后扩展.
### 1.2 请求类型
现在有Get, Post, Patch, Put, Delete, Upload, Download 这些请求方式
### 1.3 添加参数方式
添加参数可以使用addParam一个个添加, 也可以使用params一次性添加
### 1.4 添加Header方式
添加参数可以使用addHeader一个个添加, 也可以使用headers一次性添加
### 1.5 回调格式
现在回调格式有以下几种:
1. Raw原生数据 RawResponseHandler
1. Json JsonResponseHandler
1. Gson GsonResponseHandler
## 2 调用示例
### 2.1 POST请求 + Json回调示例
```java
String url = "http://192.168.2.135/myokhttp/post.php";
Map<String, String> params = new HashMap<>();
params.put("name", "tsy");
params.put("age", "24");
mMyOkhttp.post()
.url(url)
.params(params)
.tag(this)
.enqueue(new JsonResponseHandler() {
@Override
public void onSuccess(int statusCode, JSONObject response) {
Log.d(TAG, "doPost onSuccess JSONObject:" + response);
}
@Override
public void onSuccess(int statusCode, JSONArray response) {
Log.d(TAG, "doPost onSuccess JSONArray:" + response);
}
@Override
public void onFailure(int statusCode, String error_msg) {
Log.d(TAG, "doPost onFailure:" + error_msg);
}
});
```
### 2.2 GET请求 + Raw回调示例
```java
String url = "http://192.168.2.135/myokhttp/get.php";
mMyOkhttp.get()
.url(url)
.addParam("name", "tsy")
.addParam("id", "5")
.tag(this)
.enqueue(new RawResponseHandler() {
@Override
public void onSuccess(int statusCode, String response) {
Log.d(TAG, "doGet onSuccess:" + response);
}
@Override
public void onFailure(int statusCode, String error_msg) {
Log.d(TAG, "doGet onFailure:" + error_msg);
}
});
```
### 2.3 Patch请求 + Json回调示例
```java
String url = "http://192.168.2.135/myokhttp/patch.php/id/5/name/tsy";
mMyOkhttp.patch()
.url(url)
.tag(this)
.enqueue(new JsonResponseHandler() {
@Override
public void onSuccess(int statusCode, JSONObject response) {
Log.d(TAG, "doPatch onSuccess:" + response);
}
@Override
public void onFailure(int statusCode, String error_msg) {
Log.d(TAG, "doPatch onFailure:" + error_msg);
}
});
```
### 2.4 Put请求 + Json回调示例
```java
String url = "http://192.168.2.135/myokhttp/put.php/id/5/name/tsy/age/15";
mMyOkhttp.put()
.url(url)
.tag(this)
.enqueue(new JsonResponseHandler() {
@Override
public void onSuccess(int statusCode, JSONObject response) {
Log.d(TAG, "doPut onSuccess:" + response);
}
@Override
public void onFailure(int statusCode, String error_msg) {
Log.d(TAG, "doPut onFailure:" + error_msg);
}
});
```
### 2.5 Delete请求 + Json回调示例
```java
String url = "http://192.168.2.135/myokhttp/delete.php/id/5";
mMyOkhttp.delete()
.url(url)
.tag(this)
.enqueue(new JsonResponseHandler() {
@Override
public void onSuccess(int statusCode, JSONObject response) {
Log.d(TAG, "doDelete onSuccess:" + response);
}
@Override
public void onFailure(int statusCode, String error_msg) {
Log.d(TAG, "doDelete onFailure:" + error_msg);
}
});
```
### 2.6 上传文件 + Gson回调示例
```java
String url = "http://192.168.2.135/myokhttp/upload.php";
mMyOkhttp.upload()
.url(url)
.addParam("name", "tsy")
.addFile("avatar",
new File(Environment.getExternalStorageDirectory()
+ "/ahome/sasas.jpg")) //上传已经存在的File
// .addFile("avatar2", "asdsda.png", byteContents) //直接上传File bytes
.tag(this)
.enqueue(new GsonResponseHandler<UploadModel>() {
@Override
public void onFailure(int statusCode, String error_msg) {
Log.d(TAG, "doUpload onFailure:" + error_msg);
}
@Override
public void onProgress(long currentBytes, long totalBytes) {
Log.d(TAG, "doUpload onProgress:" + currentBytes + "/" + totalBytes);
}
@Override
public void onSuccess(int statusCode, UploadModel response) {
Log.d(TAG, "doUpload onSuccess:" + response.ret + " " + response.msg);
}
});
```
### 2.7 下载文件
```java
String url = "http://192.168.2.135/myokhttp/head.jpg";
mMyOkhttp.download()
.url(url)
.filePath(Environment.getExternalStorageDirectory() + "/ahome/a.jpg")
.tag(this)
.enqueue(new DownloadResponseHandler() {
@Override
public void onStart(long totalBytes) {
Log.d(TAG, "doDownload onStart");
}
@Override
public void onFinish(File downloadFile) {
Log.d(TAG, "doDownload onFinish:");
}
@Override
public void onProgress(long currentBytes, long totalBytes) {
Log.d(TAG, "doDownload onProgress:" + currentBytes + "/" + totalBytes);
}
@Override
public void onFailure(String error_msg) {
Log.d(TAG, "doDownload onFailure:" + error_msg);
}
});
```
## 3 取消请求(建议放在BaseActivity,BaseFragment的onDestroy中)
```java
mMyOkhttp.cancel(this); //tag 即之前请求时传入的tag 建议直接将页面作为object传入
```
## 4 下载管理
实现了下载管理的核心逻辑,包括添加下载任务、开始任务、暂停任务、删除任务、任务下载等待、下载进度和状态监听等功能。依赖于MyOkhttp
### 4.1 实现AbstractDownloadMgr
项目中创建DownloadMgr继承AbstractDownloadMgr,并实现下载任务的状态,进度的本地持久化保存。(AbstractDownloadMgr只负责在内存中存储所有任务,
需要项目自行实现本地持续化存储,重新进入App后的任务恢复等)
示例:
```java
/**
* 实现下载管理 AbstractDownloadMgr
* Created by t
没有合适的资源?快使用搜索试试~ 我知道了~
Android-对Okhttp3进行二次封装
共64个文件
java:33个
xml:10个
png:5个
5星 · 超过95%的资源 需积分: 46 84 下载量 40 浏览量
2019-08-13
01:48:23
上传
评论 4
收藏 144KB ZIP 举报
温馨提示
对Okhttp3进行二次封装,对外提供了POST请求、GET请求、PATCH请求、PUT请求、DELETE请求、上传文件、下载文件、取消请求、Raw/Json/Gson返回、后台下载管理等功能
资源推荐
资源详情
资源评论
收起资源包目录
Android-对Okhttp3进行二次封装.zip (64个子文件)
tsy12321-MyOkHttp-949e3ce
myokhttp
src
androidTest
java
com
tsy
sdk
myokhttp
ApplicationTest.java 351B
test
java
com
tsy
sdk
myokhttp
ExampleUnitTest.java 313B
main
AndroidManifest.xml 118B
res
values
strings.xml 25B
java
com
tsy
sdk
myokhttp
body
ProgressRequestBody.java 2KB
ResponseProgressBody.java 2KB
download_mgr
DownloadTask.java 6KB
DownloadStatus.java 538B
DownloadTaskListener.java 1KB
AbstractDownloadMgr.java 15KB
callback
MyDownloadCallback.java 6KB
MyCallback.java 1KB
builder
DeleteBuilder.java 1KB
UploadBuilder.java 5KB
PutBuilder.java 1KB
PostBuilder.java 2KB
PatchBuilder.java 1KB
GetBuilder.java 2KB
DownloadBuilder.java 6KB
OkHttpRequestBuilderHasParam.java 974B
OkHttpRequestBuilder.java 2KB
util
LogUtils.java 4KB
response
JsonResponseHandler.java 3KB
RawResponseHandler.java 1KB
IResponseHandler.java 295B
DownloadResponseHandler.java 436B
GsonResponseHandler.java 3KB
MyOkHttp.java 2KB
.gitignore 12B
build.gradle 1KB
proguard-rules.pro 661B
gradlew 5KB
settings.gradle 28B
LICENSE 11KB
gradle
wrapper
gradle-wrapper.properties 233B
gradle-wrapper.jar 52KB
README.md 17KB
gradlew.bat 2KB
gradle.properties 730B
.gitignore 86B
app
src
androidTest
java
com
tsy
sample
myokhttp
ExampleInstrumentedTest.java 750B
test
java
com
tsy
sample
myokhttp
ExampleUnitTest.java 401B
main
AndroidManifest.xml 834B
res
mipmap-hdpi
ic_launcher.png 3KB
mipmap-xxxhdpi
ic_launcher.png 10KB
mipmap-xhdpi
ic_launcher.png 5KB
mipmap-mdpi
ic_launcher.png 2KB
layout
activity_download_mgr.xml 1KB
activity_main.xml 4KB
values-w820dp
dimens.xml 358B
values
colors.xml 208B
strings.xml 71B
styles.xml 383B
dimens.xml 211B
mipmap-xxhdpi
ic_launcher.png 8KB
java
com
tsy
sample
myokhttp
MyApplication.java 1KB
UploadModel.java 134B
DownloadMgrActivity.java 4KB
DownloadMgr.java 2KB
MainActivity.java 9KB
.gitignore 7B
build.gradle 995B
proguard-rules.pro 661B
build.gradle 417B
共 64 条
- 1
资源评论
- Dotnet9.com2019-10-15多谢您的资源,接口封装的比较实用,谢谢分享。
普通网友
- 粉丝: 484
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功