Step 1. Add the JitPack repository to your build file
Add it in your root settings.gradle at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
Add it in your settings.gradle.kts at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
Add to pom.xml
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Add it in your build.sbt at the end of resolvers:
resolvers += "jitpack" at "https://jitpack.io"
Add it in your project.clj at the end of repositories:
:repositories [["jitpack" "https://jitpack.io"]]
Step 2. Add the dependency
dependencies {
implementation 'com.github.Hello-Kiki:rrorequest:1.2.1'
}
dependencies {
implementation("com.github.Hello-Kiki:rrorequest:1.2.1")
}
<dependency>
<groupId>com.github.Hello-Kiki</groupId>
<artifactId>rrorequest</artifactId>
<version>1.2.1</version>
</dependency>
libraryDependencies += "com.github.Hello-Kiki" % "rrorequest" % "1.2.1"
:dependencies [[com.github.Hello-Kiki/rrorequest "1.2.1"]]
对retrofit2+rxjava2+okhttp3 进行封装使用,尽可能方便的调用
封装功能:普通请求(post,get)
文件上传(图文,多文件,单文件带进度)
文件下载(可多文件同时,带进度)
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
dependencies {
compile 'com.github.Hello-Kiki:rrorequest:1.1'
}
HttpManager.getInstance().create(ApiService.class).getData()
.compose(HttpManager.<JsonObject>applySchedulers())
.subscribe(new SimpleCallBack<JsonObject>() {
@Override
public void onSuccess(JsonObject jsonObject) {
Log.e("2017","成功-->"+jsonObject.toString());
mTextView.setText(jsonObject.toString());
}
@Override
public void onFailure(Throwable e) {
Log.e("2017","失败-->"+e.toString());
}
});
Map<String,RequestBody> textBody=MultipartUtil.newInstance()
.addParam("text1","123")
.addParam("text2","456")
.Build();
List<File> files=new ArrayList<>();
File file=new File(Environment.getExternalStorageDirectory()+"test.png");
files.add(file);
//文件上传进度只支持单文件上传的时候使用
List<MultipartBody.Part> parts= MultipartUtil.makeMultpart("images", files, new ProgressListener() {
@Override
public void onProgress(long read, long length, boolean done) {
}
});
HttpManager.getInstance().create(ApiService.class).uploadFile(textBody,parts)
.compose(HttpManager.<JsonObject>applySchedulers())
.subscribe(new SimpleCallBack<JsonObject>() {
@Override
public void onSuccess(JsonObject jsonObject) {
//请求成功
}
@Override
public void onFailure(Throwable e) {
//请求失败
}
});
## 文件下载
因为每个人使用的数据库都不一样,在这里不统一做下载数据的保存,下载信息类为 DownInfo ,如果需要做保存,自行继承处理。
private DownInfo mDownInfo;
private HttpDownManager manager=HttpDownManager.getInstance();
mDownInfo=new DownInfo();
mDownInfo.setUrl("xxx");
mDownInfo.setSavePath("xxx");
manager.start(mDownInfo, new HttpDownListener() {
@Override
public void onStart() {
mButtonDown.setText("暂停");
}
@Override
public void onPause(long read) {
mDownInfo.setReadLength(read);
mButtonDown.setText("继续");
mTextViewProgress.setText("下载暂停");
}
@Override
public void onStop(long read) {
mDownInfo.setReadLength(read);
mButtonDown.setText("下载");
mTextViewProgress.setText("下载停止");
}
@Override
public void onFinish(DownInfo info) {
mDownInfo=info;
mButtonDown.setText("下载");
mTextViewProgress.setText("下载成功");
}
@Override
public void onError(DownInfo info,String s) {
mDownInfo=info;
mButtonDown.setText("下载");
mTextViewProgress.setText("下载失败");
}
@Override
public void onProgress(long currentRead, long addLength) {
int pro=(int)(currentRead*100/addLength);
mProgressBar.setProgress(pro);
mTextViewProgress.setText("下载中:"+pro+"%");
}
});
manager.pause(mDownInfo); //暂停下载
manager.stop(mDownInfo); //停止下载
## 取消请求 eg: HttpManager.getInstance().create(ApiService.class).getData() .compose(HttpManager.<JsonObject>applySchedulers()) .subscribe(new SimpleCallBack<JsonObject>("123") { //在构造函数中闯入标记 @Override public void onSuccess(JsonObject jsonObject) { Log.e("2017","成功-->"+jsonObject.toString()); mTextView.setText(jsonObject.toString()); }
@Override
public void onFailure(Throwable e) {
Log.e("2017","失败-->"+e.toString());
}
});
在new SimpleCallBack<JsonObject>("123") 中增加tag 参数,表示该次请求的标记
HttpManager.getInstance().cancel("123"); //单个请求取消
HttpManager.getInstance().cancelAllRequest(); //取消全部请求
## 其他 setConnectTimeOut 设置全局连接超时时间(秒) setReadTimeOut 设置全局读取超时时间(秒) setWriteTimeOut 设置全局写入超时时间(秒)
DownInfo 下载信息类:
readLength //下载进度
countLength //下载总长度
url //下载url
savePath //下载保持地址
listener //下载监听器
state //下载状态 1:下载中,2:暂停,3:停止,4:完成,5:错误
DownState 下载状态类