捣鼓一下网络工具
初始化

其中TestService类和MyProcessor


TestService类中有三个抽象方法,分别返回域名、端口和服务器名(项目名,由于做得Javaweb后台多,一般都是这样,可根据需要修改)而MyProcessor类是用来对参数进行处理,如需要加密时,需要添加统一参数时。
使用

完成一个接口只要写两个类,一个请求类(姑且这么叫),一个是返回的数据实体类,其中请求类如下

从上往下分别是,先继承BaseRequestAction,然后需要实现两个抽象方法getActionApi()和getResultType(),getActionApi()返回本次请求的接口,getResultType()返回一个确定的类型,但是写法是固定的,也就是TypeToken<BaseResultEntity<T>(){}.getType();T即为我们最终需要的实体类,需要注意的是,T是data中的数据,也就是数据格式如下
{
"code":"1",
"msg":"成功",
"data":""
}中的data的实体类,这里只要是确定的,都可以解析出来,比如传一个String也行,List<T>等等。如果接口不是以这种格式返回的,抱歉,叫后台改吧。
也就是说,BaseResultEntity其实对应了后台返回数据的格式,需要根据实际后台返回的字段修改,如

这里就是对应了后台返回
{
"resultCode":"1",
"resultDes":"成功",
"resultData":""
}
再看回action类,定义了几个参数name、password、type表示这个接口需要的参数,其中前两个有一个注解@Encryption,当添加这个注解的时候,顾名思义表示是需要加密,到时候MyProcessor类中的EncryptionProcess方法就会回调。自此已经完成了一个接口所需要的东西,在需要的地方调用即可得到结果,其中如果resultCode的值是"1"我假设后台返回1时是正常的结果,就会回调下面的方法,如果不是1怎么办,我还要处理那些不是1的结果啊,比如提示用户,又或者改变界面等等
@Override
public voidonResult(LoginBean result) {
}
很简答,实现下面这个方法

所以的其他情况都会回调到这个方法,其中

我们根据exceptionType来做啥都行,包括数据解析失败也会回调这个方法。还有一点是,当doActionPost方法传入Context时会自动弹出加载框,传null则不弹。
设计思想:力求最简。
网友评论