Novate 網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進加強_第1頁
Novate 網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進加強_第2頁
Novate 網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進加強_第3頁
Novate 網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進加強_第4頁
Novate 網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進加強_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Novate網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進加強介紹Novate的改進加入基礎(chǔ)API,減少Api冗余支持離線緩存支持多種方式訪問網(wǎng)絡(luò)(get,put,post,delete)支持文件下載和上傳支持請求頭參數(shù)統(tǒng)一添加支持對返回結(jié)果的統(tǒng)一處理支持自定義的擴展API支持統(tǒng)一請求訪問網(wǎng)絡(luò)的流程控制用法基本構(gòu)建:Novatenovate=newNovate.Builder(this).baseUrl(baseUrl).build();除了基本的構(gòu)建還提供更了其他API構(gòu)建你的header頭和參數(shù)Map<String,String>headers=newHashMap<>();headers.put("apikey","4545sdsddfd7sds");Map<String,String>parameters=newHashMap<>();parameters.put("uid","878787878sdsd");實例化:Novatenovate=newNovate.Builder(this).addParameters(parameters).connectTimeout(8).baseUrl("youapiurl").addHeader(headers).addLog(true).build();如果你需要接入證書:novate.addSSL(hosts,certificates)怎么用?int[]certificates={R.raw.myssl1,R.raw.myssl2,......}int[]hosts={"https://youhosturl2","https://youhosturl2",......}還要說明?certificates是你的ssl證書文件的id,項目中請放到raw資源文件下,myssl.cer怎么生成,這個就不是我這邊講的內(nèi)容,請用pc瀏覽器自動導出證書,保存,還不清楚的話,我會醉醉。同樣很多人想問我想對novate進行擴展,咋辦,別擔心,Novate也提供了以下方法novate.addInterceptor().addCallAdapterFactory().callFactory().client()不知道啥意思?請對Retrofit去入門,Retrofit中怎么用,Novate就怎么用。RxJava怎么處理?observable.subscribeOn(Schedulers.io()).unsubscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());內(nèi)部統(tǒng)一已進行線程控制,所有請求都采用以上線程形式,無語你手動添加。Get提供了novate.get()和novate.get()API區(qū)別如下:executeGet來執(zhí)行g(shù)et請求,此方法會解析返回你需要的bean實體novate.get()不會幫你解析實體,需要你自己對返回數(shù)據(jù)解析進行序列化。novate.executeGet("youurl",parameters,newNovate.ResponseCallBack<NovateResponse<ResultModel>>(){@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonSuccee(NovateResponse<ResultModel>response){//這里novate已對ResponseBody進行解析返回,}});如果你不需要Novate幫你解析返回的數(shù)據(jù)則調(diào)用novate.get()novate.get("youUrl",parameters,newBaseSubscriber<ResponseBody>(ExempleActivity.this){@OverridepublicvoidonNext(ResponseBodyresponseBody){try{Stringjstr=newString(responseBody.bytes());Typetype=newTypeToken<MovieModel>(){}.getType();//這里需要對ResponseBody進行解析,novate并不會幫你解析MovieModelresponse=newGson().fromJson(jstr,type);Toast.makeText(ExempleActivity.this,response.toString(),Toast.LENGTH_SHORT).show();}catch(IOExceptione){e.printStackTrace();}}});Post提供了`novate.post()`和`novate.executePost()`兩個API區(qū)別如下:executePost來執(zhí)行Post方式請求,此方法對結(jié)果解析返回你需要的bean實體novate.post()不會幫你解析實體,需要你自己對返回數(shù)據(jù)解析進行序列化。Get和Post代碼用法很相似,novate.post()/*****調(diào)用post需要你自己解析數(shù)據(jù)**如果需要解析后返回則調(diào)用novate.executeGet()*參考performGet()中的方式*/novate.post("service/getIpInfo.php",parameters,newBaseSubscriber<ResponseBody>(ExempleActivity.this){@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonNext(ResponseBodyresponseBody){try{Stringjstr=newString(responseBody.bytes());Typetype=newTypeToken<NovateResponse<ResultModel>>(){}.getType();NovateResponse<ResultModel>response=newGson().fromJson(jstr,type);Toast.makeText(ExempleActivity.this,response.getData().toString(),Toast.LENGTH_SHORT).show();}catch(IOExceptione){e.printStackTrace();}}});novate.executePost()novate.executePost("pathUrl",parameters,newNovate.ResponseCallBack<NovateResponse<MyModel>>(){@OverridepublicvoidonError(Throwablee){//todo}@OverridepublicvoidonSuccee(NovateResponse<ResultModel>response){//todo}});Putput方式則提供了novate.put()和novate.executePut()兩個API區(qū)別和用法參考上面Get和PutDelete同樣對Delete提供了novate.delete()和novate.executeDelete()兩個API區(qū)別和用法參考上面Get和PutBODY假設(shè)你需要提交body,Novate也提供了novate.body(),需要直接將你bean對象加入即可,因此可以:ovate.body(url,uesrBean,newBaseSubscriber<ResponseBody>(){@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonNext(ResponseBodyresponseBody){}});FORM假設(shè)你以提交表單,請使用novate.form(),你可以:novate.form(url,newHashMap<String,Object>(),newBaseSubscriber<ResponseBody>(){@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonNext(ResponseBodyresponseBody){}});JSON假設(shè)你需要直接pushjson字符串,你可以:novate.json(url,jsonString,newBaseSubscriber<ResponseBody>(){@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonNext(ResponseBodyresponseBody){}});UpLoad當然novate特提供了可供上傳圖片的APInovate.upload()RequestBodyrequestFile=Utils.createFile(file);novate.upload(url,requestFile,newBaseSubscriber<ResponseBody>{@OverridepublicvoidonNext(ResponseBodyresponseBody){}});如果是單文件novate.uploadFlie(url,requestFile,newBaseSubscriber<ResponseBody>{@OverridepublicvoidonNext(ResponseBodyresponseBody){}});upLoadFilesMap<String,RequestBody>map=newHashMap<>();maps.put("e1",requestFile);novate.uploadFlies(url,map,newBaseSubscriber<ResponseBody>(ExempleActivity.this){......});圖文一起同時提交圖文:適合用戶注冊等場景novate.uploaduploadbody模式//構(gòu)建body鏈式語法高逼格哦RequestBodyrequestBody=newMultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("name","tamic").addFormDataPart("ssword","12345").addFormDataPart("atavr",file.getName(),Utils.createImage(mfile)).build();novate.upload(url,requestBody,newBaseSubscriber<ResponseBody>(ExempleActivity.this){.....});利用part模式//MultipartBody.PartisusedtosendalsotheactualfilenameMultipartBody.Partbody=Utils.createPart("hello這是和后端約定好的key",file);//add描述StringdescriptionString="hello,這是文件描述";RequestBodydescription=Utils.createPartFromString(descriptionString);//執(zhí)行novate.uploadFlie(url,description,body,newBaseSubscriber<ResponseBody>(ExempleActivity.this){。。。。。});DownLoad如果說有上傳文件的接口,必定有下載文件的接口,同樣novate也提供了下載文件APInovate.download()novate.download(downUrl,newDownLoadCallBack(){@OverridepublicvoidonStart(){super.onStart();}@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonCancel(){super.onCancel();}@OverridepublicvoidonProgress(longfileSizeDownloaded){super.onProgress(fileSizeDownloaded);}@OverridepublicvoidonSucess(Stringpath,Stringname,longfileSize){}});通常還有同學要定制下載路徑和文件名,當然也有API提供:publicvoidwnload(Stringurl,StringsavePath,Stringname,DownLoadCallBackcallBack){.......}downLoad大文件novate.download(downUrl,newDownLoadCallBack(){''''''''''''});downLoad小文件novate.downloadMin(downUrl,newDownLoadCallBack(){''''''''''''});CustomApi以上方法默認會處理Novate自帶的BaseApiService,如果默認的BaseApiService無法滿足你的需求時,Novate同樣支持你自己的ApiService。定義一個你自己的APiMyAPIpublicinterfaceMyAPI{@GET("url")Observable<MyBean>getdata(@QueryMapMap<String,String>maps);}ExecuteCall通過novate提供create()實例化你的APIMyAPImyAPI=novate.create(MyAPI.class);通過novate.call()來執(zhí)行你的接口,你也不用關(guān)心,novate內(nèi)部同樣已進行RxJava線程控制。novate.call(myAPI.getdata(parameters),newBaseSubscriber<MyBean>(ExempleActivity.this){@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonNext(MyBeanMyBean){}});}取消每執(zhí)行novate.xxx()給上層返回了一個Subscription,上層可以調(diào)用unsubscribe()來進行取消!

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論