Comments (7)
感谢回复! 其实我的意思是比如在一个页面(Activity)中,需要有多个请求,而共用的是一个Callback(如:CommonCallBack),为了将返回的( T data) 数据类型做区分,我这边是在请求时给了一个int标志,然后在CallBack中进行switch,兄台觉得这样如何?因为以前自己封装的框架中,在请求时便传递了一个int的标志过去,然后在CallBack中返回过来便于判断....
from okhttp-okgo.
不同的请求一般是对应不同的 callback,因为callback内部是业务逻辑,不可能多个不同的请求,使用同样的业务逻辑哈。。
from okhttp-okgo.
确实存在一个activity中有多个请求的情况,我们现在的框架也是用Int型标志做的区分。
from okhttp-okgo.
可以继承现有的Callback自定义有请求标识的Callback,然后新建一个带int的回调监听接口重新实现就好了,我是这么做的
from okhttp-okgo.
如果同一个页面,使用同一个接口,返回的数据类型不一样,那么这个接口传递的参数一定是不一样的,那么针对不一样的参数类型,传递不一样的泛型,写不同的callback就可以了,没必要在回调中加标示位判断。如果返回的数据类型都不一样,为什么还要公用一个callback呢。我示例代码写了个基类的callback是因为我为了演示方便,无论什么接口,都只做数据展示的逻辑,没有特别的其他逻辑。。。
from okhttp-okgo.
谢谢,您的意思是根据(返回数据类型)和(传递的参数类型)不同去写不同的callback,这样完全可以,我个人是觉得既然可以通过一个标记去判断返回的数据类型,就不想写那么多CallBack了。比如一个页面中多个请求,分别需要传递实体A,实体B,实体C,List<实体> 根据您上面说的,可以写多个Callback在这个页面中,但它们最终的目的都是请求并解析完成数据,无非是返回的数据类型不同,所以我这边就根据一个请求标记在CallBack中做区分,少写了一些callback,不过特殊逻辑还是得单独定义CallBack。我想的是把那个请求id在发起请求时传过去,在onResponse中返回,多添加一个标记参数,目前暂时这样写,大神莫见笑。。。。
@OverRide
public void onClick(View v) {
switch (v.getId()) {
case R.id.get:
AppConstant.mRequestId = 0;
HttpRequestManager.getInstance().test(this,new CustomCallBack<>(this, TestInfo.class)); //请求1 实体:TestInfo.class
break;
case R.id.post:
AppConstant.mRequestId = 1;
HttpRequestManager.getInstance().login(this,"[email protected]","123456",new CustomCallBack<>(this, LoginInfo.class));//请求2 实体:LoginInfo.class
break;
case R.id.post2:
AppConstant.mRequestId = 2;
Type type = new TypeReference<List<RelicInfo>>(){}.getType(); //FastJson---指定集合Type
HttpRequestManager.getInstance().test2(this,"4",new CustomCallBack<List<RelicInfo>>(this,type)); //请求3 集合:List<RelicInfo>
break;
}
}
--------------------------------------------------------------------------------------------------------- CallBack
@OverRide
public void onResponse(boolean isFromCache, T data, Request request, Response response) {
Log.i("gao_chun", "是否来自缓存------------"+isFromCache);
switch (AppConstant.mRequestId) {
case 0:
TestInfo info = (TestInfo)data; //解析完成的实体数据
mTv.setText(info.toString());
break;
case 1:
LoginInfo mInfo = (LoginInfo) data; //解析完成的实体数据
mTv.setText(mInfo.toString());
break;
case 2:
List<RelicInfo> aInfos= (List<RelicInfo>)data; //解析完成的集合数据
mTv.setText(aInfos.toString());
break;
default:
break;
}
}
from okhttp-okgo.
好吧。。个人习惯而已。。能达到效果就可以。。
from okhttp-okgo.
Related Issues (20)
- 自己写的自用网络框架,感兴趣的看看
- upload循环上传时,会有参数复用问题
- 作者弃坑了,推荐一款新的网络请求框架 HOT 2
- QQ群被封了,有没有新群??? HOT 5
- 原群友新建QQ群:773699239,欢迎大家加入Android格调小屋
- The project has not been updated for 4 years. It is recommended to replace it with mainstream Retrofit HOT 1
- OutOfMemorryError HOT 1
- android快速接入网络库(默认通过okhttp实现,支持切换网络库)
- Google Waring
- 是否支持同步get请求
- Failed to open database '/data/user/0/com.*.*/databases/okgo.db'.
- [五年了]从开源软件精神谈谈我的感叹 HOT 4
- 参数进行转义怎么处理 HOT 1
- 格调小屋新群750467053 okgo群主已经忙的不申请了。有问题来我们这里 HOT 1
- wss请求报Caused by: java.security.cert.CertificateException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: Certificate expired at
- DBUtils HOT 1
- javax.net.ssl.SSLHandshakeException: connection closed
- 请问怎么实现类似postman单参数设置content-type
- 控制台的日志不是中文编码
- 打个广告 gson 10倍速度提升 https://github.com/NBXXF/gson_plugin
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from okhttp-okgo.