Xutils3网络请求的封装.docx

上传人:b****2 文档编号:24247802 上传时间:2023-05-25 格式:DOCX 页数:18 大小:16.93KB
下载 相关 举报
Xutils3网络请求的封装.docx_第1页
第1页 / 共18页
Xutils3网络请求的封装.docx_第2页
第2页 / 共18页
Xutils3网络请求的封装.docx_第3页
第3页 / 共18页
Xutils3网络请求的封装.docx_第4页
第4页 / 共18页
Xutils3网络请求的封装.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Xutils3网络请求的封装.docx

《Xutils3网络请求的封装.docx》由会员分享,可在线阅读,更多相关《Xutils3网络请求的封装.docx(18页珍藏版)》请在冰豆网上搜索。

Xutils3网络请求的封装.docx

Xutils3网络请求的封装

Xutils3网络请求的封装

1.gradle中添加

compile'org.xutils:

xutils:

3.3.40'

1

1

2.自定义Application

/**

*CreatedbyJoeon2016/9/25.

*/

publicclassMyAppextendsApplication{

@Override

publicvoidonCreate(){

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,Mapmaps,finalXCallBackcallback){

RequestParamsparams=newRequestParams(url);

if(null!

=maps&&!

maps.isEmpty()){

for(Map.Entryentry:

maps.entrySet()){

params.addQueryStringParameter(entry.getKey(),entry.getValue());

}

}

x.http().get(params,newCallback.CommonCallback(){

privatebooleanhasError=false;

privateStringresult=null;

@Override

publicvoidonSuccess(Stringresult){

if(result!

=null){

this.result=result;

}

}

@Override

publicvoidonError(Throwableex,booleanisOnCallback){

hasError=true;

Toast.makeText(x.app(),ex.getMessage(),Toast.LENGTH_LONG).show();

}

@Override

publicvoidonCancelled(CancelledExceptioncex){

}

@Override

publicvoidonFinished(){

if(!

hasError&&result!

=null){

onSuccessResponse(result,callback);

}

}

});

}

带缓存的get请求

/**

*带缓存数据的异步get请求

*@paramurl

*@parammaps

*@paramifCache是否缓存

*@paramcacheTime缓存存活时间

*@paramcallback

*/

publicvoidgetCache(Stringurl,Mapmaps,finalbooleanifCache,longcacheTime,finalXCallBackcallback){

RequestParamsparams=newRequestParams(url);

params.setCacheMaxAge(cacheTime);

if(null!

=maps&&maps.isEmpty()){

for(Map.Entryentry:

maps.entrySet()){

params.addQueryStringParameter(entry.getKey(),entry.getValue());

}

}

x.http().get(params,newCallback.CacheCallback(){

privatebooleanhasError=false;

privateStringresult=null;

@Override

publicbooleanonCache(Stringresult){

if(ifCache&&null!

=result){

this.result=result;

}

//true:

信任缓存数据,不在发起网络请求;false不信任缓存数据.

returnifCache;

}

@Override

publicvoidonSuccess(Stringresult){

if(result!

=null){

this.result=result;

}

}

@Override

publicvoidonError(Throwableex,booleanisOnCallback){

hasError=true;

Toast.makeText(x.app(),ex.getMessage(),Toast.LENGTH_LONG).show();

}

@Override

publicvoidonCancelled(CancelledExceptioncex){

}

@Override

publicvoidonFinished(){

if(!

hasError&&result!

=null){

onSuccessResponse(result,callback);

}

}

});

}

普通post请求

/**

*异步post请求

*@paramurl

*@parammaps

*@paramcallback

*/

publicvoidpost(Stringurl,Mapmaps,finalXCallBackcallback){

RequestParamsparams=newRequestParams(url);

if(null!

=maps&&!

maps.isEmpty()){

for(Map.Entryentry:

maps.entrySet()){

params.addBodyParameter(entry.getKey(),entry.getValue());

}

}

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

privatebooleanhasError=false;

privateStringresult=null;

@Override

publicvoidonSuccess(Stringresult){

if(result!

=null){

this.result=result;

}

}

@Override

publicvoidonError(Throwableex,booleanisOnCallback){

hasError=true;

onFailResponse(ex.getMessage(),callback);

}

@Override

publicvoidonCancelled(CancelledExceptioncex){

}

@Override

publicvoidonFinished(){

if(!

hasError&&result!

=null){

onSuccessResponse(result,callback);

}

}

});

}

带缓存的post请求

/**

*带缓存数据的异步post请求

*@paramurl

*@parammaps

*@paramifCache是否缓存

*@paramcacheTime缓存存活时间

*@paramcallback

*/

publicvoidpostCache(Stringurl,Mapmaps,finalbooleanifCache,longcacheTime,finalXCallBackcallback){

RequestParamsparams=newRequestParams(url);

params.setCacheMaxAge(cacheTime);

if(null!

=maps&&maps.isEmpty()){

for(Map.Entryentry:

maps.entrySet()){

params.addBodyParameter(entry.getKey(),entry.getValue());

}

}

x.http().get(params,newCallback.CacheCallback(){

privatebooleanhasError=false;

privateStringresult=null;

@Override

publicbooleanonCache(Stringresult){

if(ifCache&&null!

=result){

this.result=result;

}

//true:

信任缓存数据,不在发起网络请求;false不信任缓存数据.

returnifCache;

}

@Override

publicvoidonSuccess(Stringresult){

if(result!

=null){

this.result=result;

}

}

@Override

publicvoidonError(Throwableex,booleanisOnCallback){

hasError=true;

Toast.makeText(x.app(),ex.getMessage(),Toast.LENGTH_LONG).show();

}

@Override

publicvoidonCancelled(CancelledExceptioncex){

}

@Override

publicvoidonFinished(){

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(){

@Override

publicvoidonSuccess(finalFileresult){

//下载完成会走该方法

handler.post(newRunnable(){

@Override

publicvoidrun(){

if(callback!

=null){

callback.onSuccess(result);

}

}

});

}

@Override

publicvoidonError(finalThrowableex,booleanisOnCallback){

handler.post(newRunnable(){

@Override

publicvoidrun(){

if(null!

=callback){

callback.onFail(ex.getMessage());

}

}

});

}

@Override

publicvoidonCancelled(CancelledExceptioncex){

}

@Override

publicvoidonFinished(){

handler.post(newRunnable(){

@Override

publicvoidrun(){

if(callback!

=null){

callback.onFinished();

}

}

});

}

//网络请求之前回调

@Override

publicvoidonWaiting(){

}

//网络请求开始的时候回调

@Override

publicvoidonStarted(){

handler.post(newRunnable(){

@Override

publicvoidrun(){

if(null!

=callback){

callback.onstart();

}

}

});

}

//下载的时候不断回调的方法

@Override

publicvoidonLoading(finallongtotal,finallongcurrent,finalbooleanisDownloading){

//当前进度和文件总大小

handler.post(newRunnable(){

@Override

publicvoidrun(){

if(callback!

=null){

callback.onLoading(total,current,isDownloading);

}

}

});

}

});

}

文件的上传

/**

*文件上传

*

*@paramurl

*@parammaps

*@paramfile

*@paramcallback

*/

publicvoidupLoadFile(Stringurl,Mapmaps,Mapfile,finalXCallBackcallback){

RequestParamsparams=newRequestParams(url);

if(maps!

=null&&!

maps.isEmpty()){

for(Map.Entryentry:

maps.entrySet()){

params.addBodyParameter(entry.getKey(),entry.getValue());

}

}

if(file!

=null){

for(Map.Entryentry:

file.entrySet()){

params.addBodyParameter(entry.getKey(),entry.getValue().getAbsoluteFile());

}

}

//有上传文件时使用multipart表单,否则上传原始文件流.

params.setMultipart(rue);

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

@Override

publicvoidonSuccess(Stringresult){

onSuccessResponse(result,callback);

}

@Override

publicvoidonError(Throwableex,booleanisOnCallback){

}

@Override

publicvoidonCancelled(CancelledExceptioncex){

}

@Override

publicvoidonFinished(){

}

});

}

上传Json字符串到服务器

/**

*上传Json串到服务器

*@paramurl

*@parammaps将需要传的各个参数放在Map集合里面

*/

publicvoidupLoadJson(Stringurl,Mapmaps,finalXCallBackcallback){

JSONObjectjs_request=newJSONObject();//服务器需要传参的json对象

try{

for(Map.Entryentry:

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(){//发起传参为json的post请求,

//Callback.CacheCallback的泛型为后台返回数据的类型,

//根据实际需求更改

privatebooleanhasError=false;

privateStringresult=null;

@Override

publicvoidonSuccess(Stringresult){

if(result!

=null){

this.result=result;

}

}

@Override

publicvoidonError(Throwableex,booleanisOnCallback){

ex.printStackTrace();

}

@Override

publicvoidonCancelled(CancelledExceptioncex){

}

@Override

publicvoidonFinished(){

if(!

hasError&&result!

=null&&callback!

=null){

onSuccessResponse(result,callback);

}

}

});

}

使用案例:

下载调用:

XutilsHttp.getInstance().downFile(url,Utils.getSDPath()+"/"+"ShopBox_Guide_Video/"+Utils.getFileName(url),newXutilsHttp.XDownLoadCallBack(){

@Override

publicvoidonstart(){

showDialog(DIALOG_DOWNLOAD_PROGRESS);

}

@Override

publicvoidonLoading(longtotal,longcurrent,booleanisDownloading){

//当前进度和文件总大小

mProgressDialog.setMax((int)total);

mProgressDialog.setProgress((int)current);

}

@Override

publicvoidonSucces

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

当前位置:首页 > 工作范文 > 行政公文

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

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