AndroidJavaHTTP网络通信架构设计Word文档下载推荐.docx

上传人:b****5 文档编号:20609174 上传时间:2023-01-24 格式:DOCX 页数:14 大小:64.35KB
下载 相关 举报
AndroidJavaHTTP网络通信架构设计Word文档下载推荐.docx_第1页
第1页 / 共14页
AndroidJavaHTTP网络通信架构设计Word文档下载推荐.docx_第2页
第2页 / 共14页
AndroidJavaHTTP网络通信架构设计Word文档下载推荐.docx_第3页
第3页 / 共14页
AndroidJavaHTTP网络通信架构设计Word文档下载推荐.docx_第4页
第4页 / 共14页
AndroidJavaHTTP网络通信架构设计Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

AndroidJavaHTTP网络通信架构设计Word文档下载推荐.docx

《AndroidJavaHTTP网络通信架构设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《AndroidJavaHTTP网络通信架构设计Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

AndroidJavaHTTP网络通信架构设计Word文档下载推荐.docx

16

17

18

董秘android端技术交接文档

1前言

该文档为AndroidJava网络通信框架设计。

1.1文档目的

文档编写目的:

为项目参与者阅读。

比较适用于Android开发APP的网络框架的搭建。

2依赖库Xutils

在build.gradle文件中,添加依赖库:

api'

org.xutils:

xutils:

3.8.2'

3框架类

涉及到的类有:

XutilsManager:

接口管理类,依赖xutils和部分工具。

XutilsCallBackListener回调类:

处理response的回调的数据

直接上代码,大家可以直接拷贝代码。

3.1XutilsManager接口管理类

packagecom.******.******.http;

importandroid.app.Application;

importandroid.content.Context;

importandroid.text.TextUtils;

importcom.******.******.model.RequestBean;

importcom.******.******.model.RspHeadBean;

importcom.******.******.manager.AccountManager;

importcom.******.******.utils.DebugLog;

importcom.******.******.utils.GsonUtil;

importcom.******.******.utils.NetUtil;

importcom.google.gson.Gson;

importmon.Callback;

importorg.xutils.http.RequestParams;

importorg.xutils.http.cookie.DbCookieStore;

importorg.xutils.x;

importjava.util.ArrayList;

publicclassXutilsManager{

publicstaticfinalStringTAG=XutilsManager.class.getSimpleName();

privateContextmContext;

publicstaticArrayList<

XutilsHistoryBean>

xutilsHistoryBeans=newArrayList<

>

();

publicstaticvoidaddXutilsHistoty(Stringtag,Stringreq,longtime){

XutilsHistoryBeanbean=newXutilsHistoryBean();

bean.tag=tag;

bean.req=req;

bean.rsp="

unkowm"

;

bean.reqTime=time;

xutilsHistoryBeans.add(bean);

if(xutilsHistoryBeans.size()>

100){

xutilsHistoryBeans.remove(0);

}

publicstaticvoidupdateRsp(longreqTime,Stringrsp,longrspTime){

for(XutilsHistoryBeanitem:

xutilsHistoryBeans){

if(item.reqTime==reqTime){

item.rsp=rsp;

item.rspTime=rspTime;

break;

privatestaticXutilsManagerinstance;

publicstaticXutilsManagergetInstance(Contextcontext){

if(instance==null){

synchronized(XutilsManager.class){

instance=newXutilsManager();

instance.mContext=context;

returninstance;

privateXutilsManager(){

/**

*初始化Xutils。

*@paramapplication

*/

publicvoidinitXutils(Applicationapplication){

x.Ext.init(application);

x.Ext.setDebug(true);

XutilsConfig.initUrlMap();

DebugLog.d(TAG,"

SERVER_ADDR:

"

+XutilsConfig.SERVER_ADDR);

publicvoidxutilsPost(RequestBeanreq,Stringtag,inttype,XutilsCallBackListenerlistener){

Stringurl=XutilsConfig.getUrl(tag);

if(!

NetUtil.isNetWorkConnected(mContext)){

DebugLog.e(TAG,"

网络未连接,取消xutilsPosturl:

+url);

网络未连接,取消xutilsPosttag:

+tag);

listener.callbackListener(newRspEntity(false,"

网络未连接"

type,req.pageIndex));

}elseif(AccountManager.getInstance().isLogin()||XutilsConfig.login_TYPE==type){

DebugLog.w(TAG,"

xutilsPostReq-->

url:

RequestParamsparams=newRequestParams(url);

longtime=System.currentTimeMillis();

if(req!

=null){

params.setAsJsonContent(true);

StringjsonStr=GsonUtil.toJsonString(req);

tag:

+tag+"

&

&

str:

+jsonStr);

addXutilsHistoty(tag,jsonStr,time);

params.setBodyContent(jsonStr);

xutilsPost(listener,params,tag,type,req.pageIndex,time);

}else{

未登录,取消xutilsPosturl:

未登录,取消xutilsPosttag:

未登录"

publicvoidxutilsPost(Stringurl,StringjsonStr,inttype,XutilsCallBackListenerlistener){

}elseif(AccountManager.getInstance().isLogin()){

TextUtils.isEmpty(jsonStr)){

xutilsPost(listener,params,null,type,0,time);

privatebooleancheckCookie(inttype){

if(type==XutilsConfig.login_TYPE){

returntrue;

returnAccountManager.getInstance().checkCookie();

privatevoidxutilsPost(XutilsCallBackListenerlistener,RequestParamsparams,Stringtag,inttype,finalintpageIndex,finallongtime){

//if(!

checkCookie(type)){

//ToastUtil.showToast("

Cookie失效,请重新登录"

);

//AccountManager.getInstance().enterLoginActivity();

//return;

//}

x.http().post(params,newCallback.CommonCallback<

String>

(){

@Override

publicvoidonSuccess(Stringresult){

Gsongson=newGson();

RspHeadBeanrspHeadBean=null;

booleansuccess=false;

Stringcontent="

"

try{

rspHeadBean=gson.fromJson(result,RspHeadBean.class);

if(rspHeadBean!

success=(rspHeadBean.ret==0);

if(TextUtils.isEmpty(rspHeadBean.ErrorMsg)){

rspHeadBean.ErrorMsg="

+rspHeadBean.ret;

content=(rspHeadBean.ret==0)?

rspHeadBean.content:

rspHeadBean.ErrorMsg;

xutilsPostRsp-->

ret:

+rspHeadBean.ret+"

+content);

updateRsp(time,content,System.currentTimeMillis());

if(rspHeadBean.ret==ErrorConfig.ACCOUT_ERROR_OTHER_LOGINED){//该账号已在别处登录

AccountManager.getInstance().enterLoginActivity();

content="

}catch(Exceptione){

content=e.getMessage();

listener.callbackListener(newRspEntity(success,content,type,pageIndex));

if(type==XutilsConfig.login_TYPE&

success){

DbCookieStoredbCookieStore=DbCookieStore.INSTANCE;

AccountManager.getInstance().setCookieMap(dbCookieStore.getCookies());

publicvoidonError(Throwableex,booleanisOnCallback){

listener.callbackListener(newRspEntity(false,ex.toString(),type,pageIndex));

publicvoidonCancelled(CancelledExceptioncex){

listener.callbackListener(newRspEntity(false,cex.toString(),type,pageIndex));

publicvoidonFinished(){

});

}

3.2XutilsCallBackListener回调类

publicinterfaceXutilsCallBackListener{

publicvoidcallbackListener(RspEntityrspEntity);

3.3RequestBean为Request请求基类

packagecom.******.******.model;

publicclassRequestBean{

publicintpageIndex;

所有的请求,都是继承自这个类:

3.4RspHeadBean类

importcom.google.gson.annotations.SerializedName;

publicclassRspHeadBean{

@SerializedName("

cost"

publicintcost;

ret"

publicintret;

content"

publicStringcontent;

ErrorMsg"

publicStringErrorMsg;

3.5RspEntity类

publicclassRspEntity{

publicbooleansuccess;

publicintentityType;

//已经获取的数据的页数;

0表示首页数据。

publicStringrspString;

publicRspEntity(booleansuccess,StringrspString,intentityType,intpageIndex){

this.success=success;

this.rspString=rspString;

this.entityType=entityType;

this.pageIndex=pageIndex;

rspString即response的关键数据

3.6request请求举例

//设置--获取升级信息

publicstaticvoiddoUpgradeApp(XutilsCallBackListenerlistener){

DebugLog.i(XutilsManager.TAG,"

----(设置--获取升级信息)----"

Contextcontext=ComSecretaryApplication.getInstance().getContext();

UpgradeReqreq=newUpgradeReq();

req.iCheckFreq=1;

req.sClientMd5=DeviceUtil.MD5;

req.stXPTerminalInfo=newXPTerminalInfo();

req.stXPTerminalInfo.iTerminalType=1;

//0-web1-app2-离线端

req.stXPTerminalInfo.iSubType=1;

//1-andriod2-ios(iTerminalType=1时填)

Stringversion=DeviceUtil.getVersionCode(context)+"

req.stXPTerminalInfo.sVersion=version;

req.stXPTerminalInfo.sDUA="

SN=ADRCJPH_GA&

VN="

+version+"

BN=0&

RL=1920_1080&

OS=144_6.1.7601&

DV=V1"

XutilsManager.getInstance(context).xutilsPost(req,XutilsConfig.doUpgradeApp_TAG,XutilsConfig.doUpgradeApp_TYPE,listener);

3.7response回执举例

XutilsInterface.doUpgradeApp((rspEntity)->

{

if(rspEntity.success){

UpgradeRsprsp=(newGson()).fromJson(rspEntity.rspString,UpgradeRsp.class);

UpgradeInfoupgradeInfo=rsp.stUpgradeInfo;

AccountManager.getInstance().setUpgradeInfo(upgradeInfo);

BooleanforceFlag=upgradeInfo.iStatus==2;

notifyUpdateVersion(upgradeInfo,forceFlag);

//ToastUtil.showToast(rspEntity.rspString);

});

4赠送工具类

4.1DebugLog

packagecom.******.******.utils;

importandroid.util.Log;

importcom.******.******.main.AppConfig;

importcom.******.******.ui.widget.BaseActivity;

publicclassDebugLog{

privatestaticbooleanDEBUG=AppConfig.DEBUG;

publicstaticvoidd(Stringtag,Stringmsg){

if(DEBUG)Log.d(tag,msg);

publicstaticvoidi(Stringtag,Stringmsg){

if(DEBUG)Log.i(tag,msg);

publicstaticvoidv(Stringtag,Stringmsg){

if(DEBUG)Log.v(tag,msg);

publicstaticvoidw(Stringtag,Stringmsg){

if(DEBUG)Log.w(tag,msg);

publicstaticvoide(Stringtag,Stringmsg){

Log.e(tag,msg);

publicstaticvoida(Stringtag,Stringmsg){

if(DEBUG){

Log.d(tag,msg);

ToastUtil.showToast("

TAG:

-->

Msg:

+msg);

publicstaticvoidd(Objectobject,Stringmsg){

d(object.getClass().getSimpleName(),msg);

publicstaticvoidi(Objectobject,Stringmsg){

i(object.getClass().getSimpleName(),msg);

publicstaticvoidv(Objectobject,Stringmsg){

v(object.getClass().getSimpleName(),msg);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1