Xutils3网络请求的封装_第1页
Xutils3网络请求的封装_第2页
Xutils3网络请求的封装_第3页
Xutils3网络请求的封装_第4页
Xutils3网络请求的封装_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论