版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《卖报歌》教学设计及教学反思
- 《三相异步电动机的使用》设计教案
- 机场地勤车辆使用指南
- 小学科学三年级下册教学计划与教案
- 大型地铁站电梯井施工合同
- 东营电动吸尘器租赁合同模板
- 员工建议与人力资源管理
- 矿山开采临时围墙施工协议
- 医疗器械工程师工作规范
- 招投标文件编制法律要求详解
- 铸造铜及铜合金的熔炼
- 精神科护理技能5.3出走行为的防范与护理
- 《丝网印刷知识》课件
- 铁塔基础施工方案施工方案
- 有机水稻培训课件
- 装维培训课件
- 数据分析与挖掘系统服务合作协议
- 安全驾驶机动车的湿滑路面
- 探究“对勾”函数的图象与性质+教学设计 高一上学期数学人教A版(2019)必修第一册
- 【盒马鲜生生鲜类产品配送服务问题及优化建议分析10000字(论文)】
- 如何帮助大学生处理性别认同和性取向问题
评论
0/150
提交评论