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时停止队列 } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。