package rxhttp.wrapper.param;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.Scheduler;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import java.io.IOException;
import java.lang.Class;
import java.lang.Deprecated;
import java.lang.Object;
import java.lang.String;
import java.lang.SuppressWarnings;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import okhttp3.CacheControl;
import okhttp3.Call;
import okhttp3.Headers;
import okhttp3.Headers.Builder;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.jetbrains.annotations.NotNull;
import rxhttp.HttpSender;
import rxhttp.RxHttpPlugins;
import rxhttp.wrapper.cahce.CacheMode;
import rxhttp.wrapper.cahce.CacheStrategy;
import rxhttp.wrapper.callback.Function;
import rxhttp.wrapper.callback.IConverter;
import rxhttp.wrapper.entity.DownloadOffSize;
import rxhttp.wrapper.entity.ParameterizedTypeImpl;
import rxhttp.wrapper.entity.Progress;
import rxhttp.wrapper.intercept.CacheInterceptor;
import rxhttp.wrapper.parse.Parser;
import rxhttp.wrapper.parse.SimpleParser;
import rxhttp.wrapper.utils.LogTime;
import rxhttp.wrapper.utils.LogUtil;
/**
* Github
* https://github.com/liujingxing/RxHttp
* https://github.com/liujingxing/RxLife
* https://github.com/liujingxing/okhttp-RxHttp/wiki/FAQ
* https://github.com/liujingxing/okhttp-RxHttp/wiki/更新日志
*/
@SuppressWarnings("unchecked")
public class RxHttp<P extends Param, R extends RxHttp> extends BaseRxHttp {
protected P param;
private int connectTimeoutMillis;
private int readTimeoutMillis;
private int writeTimeoutMillis;
private OkHttpClient realOkClient;
private OkHttpClient okClient = HttpSender.getOkHttpClient();
protected boolean isAsync = true;
protected IConverter converter = RxHttpPlugins.getConverter();
public Request request;
protected RxHttp(P param) {
this.param = param;
}
public static void setDebug(boolean debug) {
setDebug(debug, false);
}
public static void setDebug(boolean debug, boolean segmentPrint) {
LogUtil.setDebug(debug, segmentPrint);
}
public static void init(OkHttpClient okHttpClient) {
HttpSender.init(okHttpClient);
}
public static void init(OkHttpClient okHttpClient, boolean debug) {
HttpSender.init(okHttpClient,debug);
}
public static boolean isInit() {
return HttpSender.isInit();
}
/**
* 设置统一数据解码/解密器,每次请求成功后会回调该接口并传入Http请求的结果
* 通过该接口,可以统一对数据解密,并将解密后的数据返回即可
* 若部分接口不需要回调该接口,发请求前,调用{@link #setDecoderEnabled(boolean)}方法设置false即可
*/
public static void setResultDecoder(Function<String, String> decoder) {
RxHttpPlugins.setResultDecoder(decoder);
}
/**
* 设置默认的转换器
*/
public static void setConverter(IConverter converter) {
RxHttpPlugins.setConverter(converter);
}
/**
* 设置统一公共参数回调接口,通过该接口,可添加公共参数/请求头,每次请求前会回调该接口
* 若部分接口不需要添加公共参数,发请求前,调用{@link #setAssemblyEnabled(boolean)}方法设置false即可
*/
public static void setOnParamAssembly(Function<Param<?>, Param<?>> onParamAssembly) {
RxHttpPlugins.setOnParamAssembly(onParamAssembly);
}
public R connectTimeout(int connectTimeout) {
connectTimeoutMillis = connectTimeout;
return (R)this;
}
public R readTimeout(int readTimeout) {
readTimeoutMillis = readTimeout;
return (R)this;
}
public R writeTimeout(int writeTimeout) {
writeTimeoutMillis = writeTimeout;
return (R)this;
}
public OkHttpClient getOkHttpClient() {
if (realOkClient != null) return realOkClient;
final OkHttpClient okHttpClient = okClient;
OkHttpClient.Builder builder = null;
if (connectTimeoutMillis != 0) {
if (builder == null) builder = okHttpClient.newBuilder();
builder.connectTimeout(connectTimeoutMillis, TimeUnit.MILLISECONDS);
}
if (readTimeoutMillis != 0) {
if (builder == null) builder = okHttpClient.newBuilder();
builder.readTimeout(readTimeoutMillis, TimeUnit.MILLISECONDS);
}
if (writeTimeoutMillis != 0) {
if (builder == null) builder = okHttpClient.newBuilder();
builder.writeTimeout(writeTimeoutMillis, TimeUnit.MILLISECONDS);
}
if (param.getCacheMode() != CacheMode.ONLY_NETWORK) {
if (builder == null) builder = okHttpClient.newBuilder();
builder.addInterceptor(new CacheInterceptor(getCacheStrategy()));
}
realOkClient = builder != null ? builder.build() : okHttpClient;
return realOkClient;
}
public static void dispose(Disposable disposable) {
if (!isDisposed(disposable)) disposable.dispose();
}
public static boolean isDisposed(Disposable disposable) {
return disposable == null || disposable.isDisposed();
}
public P getParam() {
return param;
}
public R setParam(P param) {
this.param = param;
return (R)this;
}
/**
* For example:
*
* ```
* RxHttp.get("/service/%1$s/...?pageSize=%2$s", 1, 20)
* .asString()
* .subscribe()
* ```
*/
public static RxHttpNoBodyParam get(String url, Object... formatArgs) {
return new RxHttpNoBodyParam(Param.get(format(url, formatArgs)));
}
public static RxHttpNoBodyParam head(String url, Object... formatArgs) {
return new RxHttpNoBodyParam(Param.head(format(url, formatArgs)));
}
public static RxHttpFormParam postForm(String url, Object... formatArgs) {
return new RxHttpFormParam(Param.postForm(format(url, formatArgs)));
}
public static RxHttpFormParam putForm(String url, Object... formatArgs) {
return new RxHttpFormParam(Param.putForm(format(url, formatArgs)));
}
public static RxHttpFormParam patchForm(String url, Object... formatArgs) {
return new RxHttpFormParam(Param.patchForm(format(url, formatArgs)));
}
public static RxHttpFormParam deleteForm(String url, Object... formatArgs) {
return new RxHttpFormParam(Param.deleteForm(format(url, formatArgs)));
}
public static RxHttpJsonParam postJson(String url, Object... formatArgs) {
return new RxHttpJsonParam(Param.postJson(format(url, formatArgs)));
}
public static RxHttpJsonParam putJson(String url, Object... formatArgs) {
return new RxHttpJsonParam(Param.putJson(format(url, formatArgs)));
}
public static RxHttpJsonParam patchJson(String url, Object... formatArgs) {
return new RxHttpJsonParam(Param.patchJson(format(url, formatArgs)));
}
public static RxHttpJsonParam deleteJson(String url, Object... formatArgs) {
return new RxHttpJsonParam(Param.deleteJson(format(url, formatArgs)));
}
public static RxHttpJsonArrayParam postJsonArray(String url, Object... formatArgs) {
return new RxHttpJsonArrayParam(Param.postJsonArray(format(url, formatArgs)));
}
public static RxHttpJsonArrayParam putJsonArray(String url, Object... formatArgs) {
return new RxHttpJsonArrayParam(Param.putJsonArray(format(url, formatArgs)));
}
public static RxHttpJsonArrayParam patchJsonArray(String url, Object... formatArgs) {
return new RxHttpJsonArrayParam(Param.patchJsonArray(format(url, formatArgs)));
}
public static RxHttpJsonArrayParam deleteJsonArray(String url, Object... formatArgs) {
return new RxHttpJsonArrayParam(Param.deleteJsonArray(format(url, formatArgs)));
}
public R
没有合适的资源?快使用搜索试试~ 我知道了~
RxHttp 鸿蒙版 Demo.zip
共31个文件
java:15个
xml:3个
gradle:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 68 浏览量
2024-02-07
11:55:59
上传
评论
收藏 90KB ZIP 举报
温馨提示
华为 鸿蒙系统 开发
资源推荐
资源详情
资源评论
收起资源包目录
RxHttp 鸿蒙版 Demo.zip (31个子文件)
HM_RxHttp_Demo-master
gradle.properties 549B
gradle
wrapper
gradle-wrapper.jar 57KB
gradle-wrapper.properties 200B
gradlew.bat 3KB
entry
src
test
java
com
example
rxhttp
ExampleTest.java 126B
main
resources
base
media
icon.png 7KB
element
string.json 195B
graphic
background_ability_main.xml 176B
background_button.xml 217B
layout
ability_main.xml 978B
java
com
example
rxhttp
MyApplication.java 209B
MainAbility.java 348B
slice
MainAbilitySlice.java 1KB
config.json 1KB
build.gradle 1KB
build
generated
source
annotation
debug
rxhttp
wrapper
param
ObservableCall.java 835B
RxHttpFormParam.java 6KB
ObservableCallEnqueue.java 3KB
ObservableCallExecute.java 3KB
RxHttpAbstractBodyParam.java 2KB
RxHttpNoBodyParam.java 1KB
RxHttpJsonParam.java 2KB
RxHttp.java 17KB
RxHttpJsonArrayParam.java 2KB
RxHttp.kt 1KB
BaseRxHttp.java 10KB
ObservableParser.java 11KB
.gitignore 7B
build.gradle 755B
settings.gradle 17B
gradlew 6KB
共 31 条
- 1
资源评论
博士僧小星
- 粉丝: 1924
- 资源: 5885
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功