一、说明
AdroidetworkmaagerbasedoAdroidVolley,JSON,XML,Map,RequestMap(withfile)support.AdroidVolley,AdroidVolley核心库及扩展工程。AdroidVolleySample,网络请求工具示例工程。Release,AdroidVolleyjar包。
二、Volley基本处理流程
1、应用初始化Volley。2、Volley创建一个RequestQueue、NetworkDispatcher组及Network。3、RequestQueue即一个Request队列,RequestQueue会创建一个ExecutorDelivery。4、NetworkDispatcher实质是Thread,从RequestQueue中取Request,通过Network加以执行。5、Network负责网络请求处理,具体过程交给HttpStack处理。6、HttpStack分HttpURLCoectio(SDK_INT>=9)与HttpCliet与两种方式。7、ExecutorDelivery负责处理请求结果,并与主线程进行交互。8、Volley在上述2-7的基础上增加了Cache等附加处理环节。
三、网络请求工具
在AdroidVolley基础上扩展了com.adroid.http包,增加了ByteArrayRequest及RequestMaager,方便JSON、XML、Map()、及RequestMap()的网络请求。
1.初始化RequestMaager
public class VolleyApplicatio exteds Applicatio { @Override public void oCreate() { super.oCreate(); RequestMaager.getIstace().iit(this);//初始化工具 } @Override public void oTermiate() { super.oTermiate(); }}
2.使用RequestMaager
publicclassMaiActivityextedsActivity{privatestaticfialStrigOUT_FILE="upload.txt";privatestaticfialStrigOUT_DATA="sadf464764sdf3ds1f3adsf789213557r12-34912-482130487321gjsaldfalfu2390q3rtheslafkhsdafhreasof";privatestaticfialStrigPOST_URL="https://allthelucky.ap01.aws.af.cm/memoServer";privatestaticfialStrigPOST_JSON="{\"actio\":\"test\",\"ifo\":\"helloworld\"}";privatestaticfialStrigGET_URL="https://raw.githubusercotet.com/paxw/adroid-volley-maager/master/test.txt";privatestaticfialStrigUPLOAD_URL="https://www.splashpadmobile.com/upload.php";privateLoadCotrolermLoadCotroler=ull;privateImageViewmImageView;@OverrideprotectedvoidoCreate(BudlesavedIstaceState){super.oCreate(savedIstaceState);setCotetView(R.layout.activity_mai);this.mImageView=(ImageView)fidViewById(R.id.imageView1);this.testPost();this.testGet();this.testFileUpload();this.testImageLoader();}privatevoidtestPost(){mLoadCotroler=RequestMaager.getIstace().post(POST_URL,POST_JSON,requestListeer,0);}privatevoidtestGet(){mLoadCotroler=RequestMaager.getIstace().get(GET_URL,requestListeer,1);}privatevoidtestFileUpload(){MaiActivity.prepareFile(this);RequestMapparams=ewRequestMap();FileuploadFile=ewFile(this.getFilesDir(),OUT_FILE);params.put("uploadedfile",uploadFile);params.put("share","1");mLoadCotroler=RequestMaager.getIstace().post(UPLOAD_URL,params,requestListeer,2);}privatevoidtestImageLoader(){NetworkApplicatio.getImageLoader().get("https://www.baidu.com/img/bdlogo.pg",ewImageListeer(){@OverridepublicvoidoErrorRespose(VolleyErrorerror){System.out.pritl("ImageoErrorRespose");}@OverridepublicvoidoRespose(ImageCotaierrespose,booleaisImmediate){System.out.pritl("ImageoRespose");if(respose!=ull&&respose.getBitmap()!=ull){mImageView.setImageBitmap(respose.getBitmap());}}});}privateRequestListeerrequestListeer=ewRequestListeer(){@OverridepublicvoidoSuccess(Strigrespose,Strigurl,itactioId){System.out.pritl("actioId:"+actioId+",OSucess!\"+respose);}@OverridepublicvoidoError(StrigerrorMsg,Strigurl,itactioId){System.out.pritl("actioId:"+actioId+",oError!\"+errorMsg);}@OverridepublicvoidoRequest(){System.out.pritl("requestsed...");}};@OverridepublicvoidoBackPressed(){super.oBackPressed();if(mLoadCotroler!=ull){mLoadCotroler.cacel();}}privatestaticvoidprepareFile(Cotextcotext){FileOutputStreamfos=ull;try{fos=cotext.opeFileOutput(OUT_FILE,Cotext.MODE_PRIVATE);try{fos.write(OUT_DATA.getBytes());}catch(IOExceptioe){e.pritStackTrace();}}catch(FileNotFoudExceptioe){e.pritStackTrace();}fially{if(fos!=ull){try{fos.close();}catch(IOExceptioe){e.pritStackTrace();}}}}}







评论