




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Xutils3网络请求的封装1.gradle中添加compile'org.xutils:xutils:3.3.40'112.自定义Application/***CreatedbyJoeon2016/9/25.*/publicclassMyAppextendsApplication{@OverridepublicvoidonCreate(){super.onCreate();x.Ext.init(this);x.Ext.setDebug(BuildConfig.DEBUG);//是否输出debug日志,开启debug会影响性能.}}3.清单文件application节点点添加android:name=".activitys.MyApp"上面三步走完接下来就可以使用了先写一个单利类,话不多说上代码privatevolatilestaticXutilsHttpinstance;privateHandlerhandler;privateXutilsHttp(){handler=newHandler(Looper.getMainLooper());}/***单利模式*@return*/publicstaticXutilsHttpgetInstance(){if(instance==null){synchronized(XutilsHttp.class){
if(instance==null){instance=newXutilsHttp();}}}returninstance;}写好接口//接口回调publicinterfaceXCallBack{voidonResponse(Stringresult);voidonFail(Stringresult);}//下载的接口回调publicinterfaceXDownLoadCallBack{voidonstart();voidonLoading(longtotal,longcurrent,booleanisDownloading);voidonSuccess(Fileresult);voidonFail(Stringresult);voidonFinished();}封装普通get请求/***普通get请求*@paramurl*@parammaps*@paramcallback*/publicvoidget(Stringurl,Map<String,String>maps,finalXCallBackcallback){RequestParamsparams=newRequestParams(url);if(null!=maps&&!maps.isEmpty()){for(Map.Entry<String,String>entry:maps.entrySet()){params.addQueryStringParameter(entry.getKey(),entry.getValue());}}x.http().get(params,newCallback.CommonCallback<String>(){privatebooleanhasError=false;privateStringresult=null;@OverridepublicvoidonSuccess(Stringresult){
if(result!=null){this.result=result;}}@OverridepublicvoidonError(Throwableex,booleanisOnCallback){hasError=true;Toast.makeText(x.app(),ex.getMessage(),Toast.LENGTH_LONG).show();}@OverridepublicvoidonCancelled(CancelledExceptioncex){}@OverridepublicvoidonFinished(){if(!hasError&&result!=null){onSuccessResponse(result,callback);}}});}带缓存的get请求/***带缓存数据的异步get请求*@paramurl*@parammaps*@paramifCache是否缓存*@paramcacheTime缓存存活时间*@paramcallback*/publicvoidgetCache(Stringurl,Map<String,String>maps,finalbooleanifCache,longcacheTime,finalXCallBackcallback){RequestParamsparams=newRequestParams(url);params.setCacheMaxAge(cacheTime);if(null!=maps&&maps.isEmpty()){for(Map.Entry<String,String>entry:maps.entrySet()){params.addQueryStringParameter(entry.getKey(),entry.getValue());}}
x.http().get(params,newCallback.CacheCallback<String>(){privatebooleanhasError=false;privateStringresult=null;@OverridepublicbooleanonCache(Stringresult){if(ifCache&&null!=result){this.result=result;}//true:信任缓存数据,不在发起网络请求;false不信任缓存数据.returnifCache;}@OverridepublicvoidonSuccess(Stringresult){if(result!=null){this.result=result;}}@OverridepublicvoidonError(Throwableex,booleanisOnCallback){hasError=true;Toast.makeText(x.app(),ex.getMessage(),Toast.LENGTH_LONG).show();}@OverridepublicvoidonCancelled(CancelledExceptioncex){}@OverridepublicvoidonFinished(){if(!hasError&&result!=null){onSuccessResponse(result,callback);}}});}普通post请求/***异步post请求*@paramurl
*@parammaps*@paramcallback*/publicvoidpost(Stringurl,Map<String,String>maps,finalXCallBackcallback){RequestParamsparams=newRequestParams(url);if(null!=maps&&!maps.isEmpty()){for(Map.Entry<String,String>entry:maps.entrySet()){params.addBodyParameter(entry.getKey(),entry.getValue());}}x.http().post(params,newCallback.CommonCallback<String>(){privatebooleanhasError=false;privateStringresult=null;@OverridepublicvoidonSuccess(Stringresult){if(result!=null){this.result=result;}}@OverridepublicvoidonError(Throwableex,booleanisOnCallback){hasError=true;onFailResponse(ex.getMessage(),callback);}@OverridepublicvoidonCancelled(CancelledExceptioncex){}@OverridepublicvoidonFinished(){if(!hasError&&result!=null){onSuccessResponse(result,callback);}}});}带缓存的post请求/***带缓存数据的异步post请求
*@paramurl*@parammaps*@paramifCache是否缓存*@paramcacheTime缓存存活时间*@paramcallback*/publicvoidpostCache(Stringurl,Map<String,String>maps,finalbooleanifCache,longcacheTime,finalXCallBackcallback){RequestParamsparams=newRequestParams(url);params.setCacheMaxAge(cacheTime);if(null!=maps&&maps.isEmpty()){for(Map.Entry<String,String>entry:maps.entrySet()){params.addBodyParameter(entry.getKey(),entry.getValue());}}x.http().get(params,newCallback.CacheCallback<String>(){privatebooleanhasError=false;privateStringresult=null;@OverridepublicbooleanonCache(Stringresult){if(ifCache&&null!=result){this.result=result;}//true:信任缓存数据,不在发起网络请求;false不信任缓存数据.returnifCache;}@OverridepublicvoidonSuccess(Stringresult){if(result!=null){this.result=result;}}@OverridepublicvoidonError(Throwableex,booleanisOnCallback){hasError=true;Toast.makeText(x.app(),ex.getMessage(),Toast.LENGTH_LONG).show();}@OverridepublicvoidonCancelled(CancelledExceptioncex){}
@OverridepublicvoidonFinished(){if(!hasError&&result!=null){onSuccessResponse(result,callback);}}});}文件的下载/***下载文件*@paramurl*@paramfilePath*@paramcallback*/publicvoiddownFile(Stringurl,StringfilePath,finalXDownLoadCallBackcallback){RequestParamsparams=newRequestParams(url);params.setSaveFilePath(filePath);params.setAutoRename(true);x.http().get(params,newCallback.ProgressCallback<File>(){@OverridepublicvoidonSuccess(finalFileresult){//下载完成会走该方法handler.post(newRunnable(){@Overridepublicvoidrun(){if(callback!=null){callback.onSuccess(result);}}});}@OverridepublicvoidonError(finalThrowableex,booleanisOnCallback){handler.post(newRunnable(){@Overridepublicvoidrun(){if(null!=callback){callback.onFail(ex.getMessage());}}
});}@OverridepublicvoidonCancelled(CancelledExceptioncex){}@OverridepublicvoidonFinished(){handler.post(newRunnable(){@Overridepublicvoidrun(){if(callback!=null){callback.onFinished();}}});}//网络请求之前回调@OverridepublicvoidonWaiting(){}//网络请求开始的时候回调@OverridepublicvoidonStarted(){handler.post(newRunnable(){@Overridepublicvoidrun(){if(null!=callback){callback.onstart();}}});}//下载的时候不断回调的方法@OverridepublicvoidonLoading(finallongtotal,finallongcurrent,finalbooleanisDownloading){//当前进度和文件总大小handler.post(newRunnable(){@Overridepublicvoidrun(){if(callback!=null){callback.onLoading(total,current,isDownloading);}}
});}});}文件的上传/***文件上传**@paramurl*@parammaps*@paramfile*@paramcallback*/publicvoidupLoadFile(Stringurl,Map<String,String>maps,Map<String,File>file,finalXCallBackcallback){RequestParamsparams=newRequestParams(url);if(maps!=null&&!maps.isEmpty()){for(Map.Entry<String,String>entry:maps.entrySet()){params.addBodyParameter(entry.getKey(),entry.getValue());}}if(file!=null){for(Map.Entry<String,File>entry:file.entrySet()){params.addBodyParameter(entry.getKey(),entry.getValue().getAbsoluteFile());}}//有上传文件时使用multipart表单,否则上传原始文件流.params.setMultipart(rue);x.http().post(params,newCallback.CommonCallback<String>(){@OverridepublicvoidonSuccess(Stringresult){onSuccessResponse(result,callback);}@OverridepublicvoidonError(Throwableex,booleanisOnCallback){}@OverridepublicvoidonCancelled(CancelledExceptioncex){
}@OverridepublicvoidonFinished(){}});}上传Json字符串到服务器/***上传Json串到服务器*@paramurl*@parammaps将需要传的各个参数放在Map集合里面*/publicvoidupLoadJson(Stringurl,Map<String,String>maps,finalXCallBackcallback){JSONObjectjs_request=newJSONObject();//服务器需要传参的json对象try{for(Map.Entry<String,String>entry:maps.entrySet()){js_request.put(entry.getKey(),entry.getValue());}}catch(JSONExceptione){e.printStackTrace();}RequestParamsparams=newRequestParams(url);params.setAsJsonContent(rue);params.setBodyContent(js_request.toString());x.http().post(params,newCallback.CommonCallback<String>(){//发起传参为json的post请求,//Callback.CacheCallback<String>的泛型为后台返回数据的类型,//根据实际需求更改privatebooleanhasError=false;privateStringresult=null;@OverridepublicvoidonSuccess(Stringresult){if(result!=null){this.result=result;}
}@OverridepublicvoidonError(Throwableex,booleanisOnCallback){ex.printStackTrace();}@OverridepublicvoidonCancelled(CancelledExceptioncex){}@OverridepublicvoidonFinished(){if(!hasError&&result!=null&&callback!=null){onSuccessResponse(result,callback);}}});}使用案例:下载调用:XutilsHttp.getInstanc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科室医疗垃圾管理办法
- 广西项目经费管理办法
- 肩周炎的康复护理
- 肩周炎中医讲座课件教案
- 肥胖的班会课件
- 灌篮高手培训课件
- 住院医师培训课件
- 股利政策教学课件
- 肝癌患者的护理课件
- 东莞一模数学试卷
- 2025年人教版中考英语复习:2022年版课标核心词汇1600词 英汉+汉英 默写练习(含答案)
- 养护巡查制度
- 房地产行业数据安全管理制度及流程
- 新人教版数学五年级下册第二单元《因数和倍数》教材解读
- AI人工智能伦理与社会责任
- 2024年中国心力衰竭诊断与治疗指南更新要点解读
- 系统压力测试评估执行规范
- 北师大版五年级下册数学计算题每日一练带答案(共30天)
- 河南省建筑安全员《A证》考试题库
- 病理科生物安全培训
- 2025年立普妥行业深度研究分析报告-20241226-185650
评论
0/150
提交评论