Android详解之NoHttp最基本使用(无封装)
NoHttp是专门做Android网络请求与下载的框架,NoHttp基本使用方法如下
本文demo源码下载地址:http://xiazai.jb51.net/201609/yuanma/AndroidNoHttp(jb51.net).rar
本文的例子来自上面的demo中的OriginalActivity中。
代码
对于新手,看别人封装好的代码允许要稍微吃力一点,尤其是一个框架,所以我们先看NoHttp最原始的使用方法:
publicclassOriginalActivityextendsBaseActivityimplementsView.OnClickListener{
/**
*用来标志请求的what,类似handler的what一样,这里用来区分请求
*/
privatestaticfinalintNOHTTP_WHAT_TEST=0x001;
/**
*请求的时候等待框
*/
privateWaitDialogmWaitDialog;
/**
*请求队列
*/
privateRequestQueuerequestQueue;
@Override
protectedvoidonActivityCreate(BundlesavedInstanceState){
setTitle(Application.getInstance().nohttpTitleList[0]);
setContentView(R.layout.activity_original);
//按钮点击监听
findView(R.id.btn_start).setOnClickListener(this);
mWaitDialog=newWaitDialog(this);
//创建请求队列,默认并发3个请求,传入数字改变并发数量:NoHttp.newRequestQueue(1);
requestQueue=NoHttp.newRequestQueue();
}
@Override
publicvoidonClick(Viewv){
//创建请求对象
Request<String>request=NoHttp.createStringRequest(url,RequestMethod.POST);
//添加请求参数
request.add("userName","yolanda");
request.add("userPass",1);
request.add("userAge",1.25);
//上传文件
request.add("userHead",newFileBinary(newFile(path)));
//添加请求头
request.addHeader("Author","nohttp_sample");
//设置一个tag,在请求完(失败/成功)时原封不动返回;多数情况下不需要
//request.setTag(object);
/*
*what:当多个请求同时使用同一个OnResponseListener时用来区分请求,类似handler的what一样
*request:请求对象
*onResponseListener回调对象,接受请求结果
*/
requestQueue.add(NOHTTP_WHAT_TEST,request,onResponseListener);
}
/**
*回调对象,接受请求结果
*/
privateOnResponseListener<String>onResponseListener=newOnResponseListener<String>(){
@SuppressWarnings("unused")
@Override
publicvoidonSucceed(intwhat,Response<String>response){
if(what==NOHTTP_WHAT_TEST){//判断what是否是刚才指定的请求
//请求成功
Stringresult=response.get();//响应结果
//响应头
Headersheaders=response.getHeaders();
headers.getResponseCode();//响应码
response.getNetworkMillis();//请求花费的时间
}
}
@Override
publicvoidonStart(intwhat){
//请求开始,显示dialog
mWaitDialog.show();
}
@Override
publicvoidonFinish(intwhat){
//请求结束,关闭dialog
mWaitDialog.dismiss();
}
@Override
publicvoidonFailed(intwhat,Stringurl,Objecttag,CharSequenceerror,intresCode,longms){
//请求失败
...
}
};
@Override
protectedvoidonDestroy(){
super.onDestroy();
requestQueue.cancelAll();//退出APP时停止所有请求
requestQueue.stop();//退出APP时停止队列
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。