![Novate 網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進(jìn)加強(qiáng)_第1頁](http://file4.renrendoc.com/view/2e90269ca96e94b8c34c9c5400efeae4/2e90269ca96e94b8c34c9c5400efeae41.gif)
![Novate 網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進(jìn)加強(qiáng)_第2頁](http://file4.renrendoc.com/view/2e90269ca96e94b8c34c9c5400efeae4/2e90269ca96e94b8c34c9c5400efeae42.gif)
![Novate 網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進(jìn)加強(qiáng)_第3頁](http://file4.renrendoc.com/view/2e90269ca96e94b8c34c9c5400efeae4/2e90269ca96e94b8c34c9c5400efeae43.gif)
![Novate 網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進(jìn)加強(qiáng)_第4頁](http://file4.renrendoc.com/view/2e90269ca96e94b8c34c9c5400efeae4/2e90269ca96e94b8c34c9c5400efeae44.gif)
![Novate 網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進(jìn)加強(qiáng)_第5頁](http://file4.renrendoc.com/view/2e90269ca96e94b8c34c9c5400efeae4/2e90269ca96e94b8c34c9c5400efeae45.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Novate網(wǎng)絡(luò)庫:Retrofit2.0和RxJava的又一次完美改進(jìn)加強(qiáng)介紹Novate的改進(jìn)加入基礎(chǔ)API,減少Api冗余支持離線緩存支持多種方式訪問網(wǎng)絡(luò)(get,put,post,delete)支持文件下載和上傳支持請(qǐng)求頭參數(shù)統(tǒng)一添加支持對(duì)返回結(jié)果的統(tǒng)一處理支持自定義的擴(kuò)展API支持統(tǒng)一請(qǐ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");實(shí)例化: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,項(xiàng)目中請(qǐng)放到raw資源文件下,myssl.cer怎么生成,這個(gè)就不是我這邊講的內(nèi)容,請(qǐng)用pc瀏覽器自動(dòng)導(dǎo)出證書,保存,還不清楚的話,我會(huì)醉醉。同樣很多人想問我想對(duì)novate進(jìn)行擴(kuò)展,咋辦,別擔(dān)心,Novate也提供了以下方法novate.addInterceptor().addCallAdapterFactory().callFactory().client()不知道啥意思?請(qǐng)對(duì)Retrofit去入門,Retrofit中怎么用,Novate就怎么用。RxJava怎么處理?observable.subscribeOn(Schedulers.io()).unsubscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());內(nèi)部統(tǒng)一已進(jìn)行線程控制,所有請(qǐng)求都采用以上線程形式,無語你手動(dòng)添加。Get提供了novate.get()和novate.get()API區(qū)別如下:executeGet來執(zhí)行g(shù)et請(qǐng)求,此方法會(huì)解析返回你需要的bean實(shí)體novate.get()不會(huì)幫你解析實(shí)體,需要你自己對(duì)返回?cái)?shù)據(jù)解析進(jìn)行序列化。novate.executeGet("youurl",parameters,newNovate.ResponseCallBack<NovateResponse<ResultModel>>(){@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonSuccee(NovateResponse<ResultModel>response){//這里novate已對(duì)ResponseBody進(jìn)行解析返回,}});如果你不需要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();//這里需要對(duì)ResponseBody進(jìn)行解析,novate并不會(huì)幫你解析MovieModelresponse=newGson().fromJson(jstr,type);Toast.makeText(ExempleActivity.this,response.toString(),Toast.LENGTH_SHORT).show();}catch(IOExceptione){e.printStackTrace();}}});Post提供了`novate.post()`和`novate.executePost()`兩個(gè)API區(qū)別如下:executePost來執(zhí)行Post方式請(qǐng)求,此方法對(duì)結(jié)果解析返回你需要的bean實(shí)體novate.post()不會(huì)幫你解析實(shí)體,需要你自己對(duì)返回?cái)?shù)據(jù)解析進(jìn)行序列化。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()兩個(gè)API區(qū)別和用法參考上面Get和PutDelete同樣對(duì)Delete提供了novate.delete()和novate.executeDelete()兩個(gè)API區(qū)別和用法參考上面Get和PutBODY假設(shè)你需要提交body,Novate也提供了novate.body(),需要直接將你bean對(duì)象加入即可,因此可以:ovate.body(url,uesrBean,newBaseSubscriber<ResponseBody>(){@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonNext(ResponseBodyresponseBody){}});FORM假設(shè)你以提交表單,請(qǐng)使用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當(dāng)然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){......});圖文一起同時(shí)提交圖文:適合用戶注冊等場景novate.uploaduploadbody模式//構(gòu)建body鏈?zhǔn)秸Z法高逼格哦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){}});通常還有同學(xué)要定制下載路徑和文件名,當(dāng)然也有API提供:publicvoidwnload(Stringurl,StringsavePath,Stringname,DownLoadCallBackcallBack){.......}downLoad大文件novate.download(downUrl,newDownLoadCallBack(){''''''''''''});downLoad小文件novate.downloadMin(downUrl,newDownLoadCallBack(){''''''''''''});CustomApi以上方法默認(rèn)會(huì)處理Novate自帶的BaseApiService,如果默認(rèn)的BaseApiService無法滿足你的需求時(shí),Novate同樣支持你自己的ApiService。定義一個(gè)你自己的APiMyAPIpublicinterfaceMyAPI{@GET("url")Observable<MyBean>getdata(@QueryMapMap<String,String>maps);}ExecuteCall通過novate提供create()實(shí)例化你的APIMyAPImyAPI=novate.create(MyAPI.class);通過novate.call()來執(zhí)行你的接口,你也不用關(guān)心,novate內(nèi)部同樣已進(jìn)行RxJava線程控制。novate.call(myAPI.getdata(parameters),newBaseSubscriber<MyBean>(ExempleActivity.this){@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonNext(MyBeanMyBean){}});}取消每執(zhí)行novate.xxx()給上層返回了一個(gè)Subscription,上層可以調(diào)用unsubscribe()來進(jìn)行取消!
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年信用卡消費(fèi)借款合同樣本
- 2025年廣告授權(quán)協(xié)議
- 2025年鉚接設(shè)備項(xiàng)目提案報(bào)告模板
- 2025年事業(yè)單位合同違約責(zé)任免除條件
- 2025年標(biāo)準(zhǔn)酒店股份投資合作合同文本
- 2025年公共安全視頻監(jiān)控系統(tǒng)分包安裝合同書
- 2025年英語合同模板大全
- 2025年城市擴(kuò)建征收土地合同范文
- 2025年臨時(shí)電源項(xiàng)目協(xié)議
- 2025年建筑施工安全保險(xiǎn)合同格式
- SOR-04-014-00 藥品受托生產(chǎn)企業(yè)審計(jì)評(píng)估報(bào)告模板
- 足球場建設(shè)項(xiàng)目設(shè)計(jì)方案
- 小學(xué)語文教師讀書筆記范文(5篇)
- 兒童四宮格數(shù)獨(dú)96題-(由簡到難,支持打印)
- 景觀模型設(shè)計(jì)與制作:第7章 建筑模型制作基本技法
- 關(guān)愛婦女防治兩癌講座課件
- 2024-2030年傷口護(hù)理管理行業(yè)市場現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究分析報(bào)告
- (正式版)FZ∕T 80018-2024 服裝 防靜電性能要求及試驗(yàn)方法
- 北師大版八年級(jí)下冊生物教案全冊
- 混凝土攪拌站安全生產(chǎn)風(fēng)險(xiǎn)分級(jí)管控體系方案全套資料2021-2022完整實(shí)施方案模板
- 新生兒紅臀的預(yù)防和護(hù)理
評(píng)論
0/150
提交評(píng)論