/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠDr ake , ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . dr ake . net . request Ċ Ċ import Ġcom . dr ake . net . Net Config Ċ import Ġcom . dr ake . net . body . name Ċ import Ġcom . dr ake . net . body . peek String Ċ import Ġcom . dr ake . net . body . value Ċ import Ġcom . dr ake . net . convert . Net Converter Ċ import Ġcom . dr ake . net . interfaces . Progress Listener Ċ import Ġcom . dr ake . net . tag . Net Label Ċ import Ġokhttp 3 .* Ċ import Ġjava . net . URL Decoder Ċ import Ġjava . util . concurrent . Concurrent Linked Queue Ċ import Ġkotlin . reflect . K Type Ċ Ċ // < editor - fold Ġdesc =" è¯·æ±Ĥ å±ŀæĢ§ "> Ċ Ċ /** Ċ Ġ* Ġè¯·æ±Ĥ çļĦ Id Ċ Ġ*/ Ċ var ĠRequest . id : ĠAny ? ĊĠĠĠ Ġget () Ġ= Ġlabel < Net Label . RequestId >() ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Label ( Net Label . RequestId ( value )) ĊĠĠĠ Ġ} Ċ Ċ /** Ċ Ġ* Ġè¯·æ±Ĥ çļĦ åĪĨ ç»Ħ åĲį Ċ Ġ* ĠGroup åĴĮ Id æľ¬ è´¨ ä¸Ĭ éĥ½æĺ¯ ä»»æĦı å¯¹è±¡ Any . Ġ ä½Ĩæĺ¯ Net ç½ĳç»ľ è¯·æ±Ĥ ä¸Ń èĩªåĬ¨ åıĸæ¶Ī çļĦ æĵįä½ľ éĥ½æĺ¯ éĢļè¿ĩ Group åĪĨ ç»Ħ . Ġå¦Ĥæŀľ ä½ł è¦ĨçĽĸ åı¯èĥ½ä¼ļ å¯¼èĩ´ èĩªåĬ¨ åıĸæ¶Ī æĹł æķĪ Ċ Ġ* Ġåľ¨ è®¾è®¡ çĲĨ å¿µ ä¸Ĭ åĪĨ ç»Ħ åı¯ä»¥ éĩįå¤į . ĠId ä¸į è¡Į Ċ Ġ*/ Ċ var ĠRequest . group : ĠAny ? ĊĠĠĠ Ġget () Ġ= Ġlabel < Net Label . Request Group >() ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Label ( Net Label . Request Group ( value )) ĊĠĠĠ Ġ} Ċ Ċ /** Ċ Ġ* Ġæĺ¯åĲ¦ è¾ĵåĩº ç½ĳç»ľ è¯·æ±Ĥ æĹ¥å¿Ĺ Ċ Ġ* Ġ è¯¥ å±ŀæĢ§ åĴĮ [ Net Config . log Enabled ] æľī æīĢ åĮº åĪ« Ċ Ġ* Ġ@ see Ġ[ com . dr ake . net . interceptor . Log Record Interceptor ] Ċ Ġ*/ Ċ var ĠRequest . log Record : ĠBoolean ? ĊĠĠĠ Ġget () Ġ= Ġlabel < Net Label . Log Record >() ?. enabled ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Label ( value ?. let Ġ{ ĠNet Label . Log Record ( it ) Ġ}) ĊĠĠĠ Ġ} Ċ Ċ /** Ċ Ġ* ĠK Type å±ŀ äºİ Kotlin çī¹ æľīçļĦ Type , Ġæ Ł Ĳ äºĽ kotlin çĭ¬ åįł æ¡Ĩæŀ¶ åı¯èĥ½ä¼ļ ä½¿çĶ¨ åĪ° . Ġ ä¾ĭå¦Ĥ Ġkotlin . serialization Ċ Ġ*/ Ċ var ĠRequest . k Type : ĠK Type ? ĊĠĠĠ Ġget () Ġ= Ġlabel < Net Label . Request K Type >() ?. value ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Label ( Net Label . Request K Type ( value )) ĊĠĠĠ Ġ} Ċ Ċ @ Deprecated (" å»ºè®® ä½¿çĶ¨ å±ŀæĢ§ ", ĠReplace With (" id "), ĠDeprec ation Level . ERROR ) Ċ fun ĠRequest . id (): ĠAny ? Ġ{ ĊĠĠĠ Ġreturn Ġid Ċ } Ċ Ċ @ Deprecated (" å»ºè®® ä½¿çĶ¨ å±ŀæĢ§ ", ĠReplace With (" group "), ĠDeprec ation Level . ERROR ) Ċ fun ĠRequest . group (): ĠAny ? Ġ{ ĊĠĠĠ Ġreturn Ġgroup Ċ } Ċ Ċ @ Deprecated (" å»ºè®® ä½¿çĶ¨ å±ŀæĢ§ ", ĠReplace With (" log Record "), ĠDeprec ation Level . ERROR ) Ċ fun ĠRequest . is Log Record (): ĠBoolean ? Ġ{ ĊĠĠĠ Ġreturn Ġlog Record Ċ } Ċ Ċ @ Deprecated (" å»ºè®® ä½¿çĶ¨ å±ŀæĢ§ ", ĠReplace With (" k Type "), ĠDeprec ation Level . ERROR ) Ċ fun ĠRequest . k Type (): ĠK Type ? Ġ{ ĊĠĠĠ Ġreturn Ġk Type Ċ } Ċ Ċ // </ editor - fold > Ċ Ċ // < editor - fold Ġdesc =" Request . Builder "> Ċ Ċ /** Ċ Ġ* Ġè®¾ç½® è¯·æ±Ĥ Id Ċ Ġ*/ Ċ fun ĠRequest . Builder . setId ( id : ĠAny ?) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġset Label ( Net Label . RequestId ( id )) Ċ } Ċ Ċ /** Ċ Ġ* Ġè®¾ç½® è¯·æ±Ĥ åĪĨ ç»Ħ Ċ Ġ*/ Ċ fun ĠRequest . Builder . set Group ( group : ĠAny ?) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġset Label ( Net Label . Request Group ( group )) Ċ } Ċ Ċ /** Ċ Ġ* Ġè®¾ç½® æĺ¯åĲ¦ è®°å½ķ æĹ¥å¿Ĺ Ċ Ġ*/ Ċ fun ĠRequest . Builder . set Log Record ( enabled : ĠBoolean ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġset Label ( Net Label . Log Record ( enabled )) Ċ } Ċ Ċ /** Ċ Ġ* Ġè®¾ç½® K Type Ċ Ġ*/ Ċ fun ĠRequest . Builder . set K Type ( type : ĠK Type ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġset Label ( Net Label . Request K Type ( type )) Ċ } Ċ Ċ /** Ċ Ġ* Ġ åħ¨éĥ¨ çļĦ è¯·æ±Ĥ å¤´ Ċ Ġ*/ Ċ fun ĠRequest . Builder . headers (): ĠHeaders . Builder Ġ{ ĊĠĠĠ Ġreturn ĠOk Http Utils . headers ( this ) Ċ } Ċ // </ editor - fold > Ċ Ċ // < editor - fold Ġdesc =" æłĩçŃ¾ "> Ċ Ċ /** Ċ Ġ* Ġè¿ĶåĽŀ éĶ® åĢ¼ å¯¹ çļĦ æłĩçŃ¾ Ċ Ġ* Ġ éĶ® åĢ¼ å¯¹ æłĩçŃ¾ åį³ Ok Http ä¸ŃçļĦ å®ŀéĻħ tag ( åľ¨ Net ä¸Ń åı« label ) ä¸ŃçļĦ ä¸Ģä¸ª Map éĽĨåĲĪ Ċ Ġ*/ Ċ fun ĠRequest . tag ( name : ĠString ): ĠAny ? Ġ{ ĊĠĠĠ Ġreturn Ġlabel < Net Label . Tags >() ?. get ( name ) Ċ } Ċ Ċ /** Ċ Ġ* Ġè®¾ç½® éĶ® åĢ¼ å¯¹ çļĦ æłĩçŃ¾ Ċ Ġ*/ Ċ fun ĠRequest . setTag ( name : ĠString , Ġvalue : ĠAny ?) Ġ{ ĊĠĠĠ Ġval Ġtags Ġ= Ġtags () ĊĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtags . remove ( name ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġtags [ name ] Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġè®¾ç½® éĶ® åĢ¼ å¯¹ çļĦ tag Ċ Ġ*/ Ċ fun ĠRequest . Builder . setTag ( name : ĠString , Ġvalue : ĠAny ?) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġval Ġtags Ġ= Ġtags () ĊĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtags . remove ( name ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġtags [ name ] Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ åħ¨éĥ¨ éĶ® åĢ¼ å¯¹ æłĩçŃ¾ Ċ Ġ*/ Ċ fun ĠRequest . tags (): ĠHashMap < String , ĠAny ?> Ġ{ ĊĠĠĠ Ġvar Ġtags Ġ= Ġlabel < Net Label . Tags >() ĊĠĠĠ Ġif Ġ( tags Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtags Ġ= ĠNet Label . Tags () ĊĠĠĠĠĠĠĠ Ġset Label ( tags ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtags Ċ } Ċ Ċ /** Ċ Ġ* Ġ åħ¨éĥ¨ éĶ® åĢ¼ å¯¹ æłĩçŃ¾ Ċ Ġ*/ Ċ fun ĠRequest . Builder . tags (): ĠHashMap < String , ĠAny ?> Ġ{ ĊĠĠĠ Ġvar Ġtags Ġ= Ġlabel < Net Label . Tags >() ĊĠĠĠ Ġif Ġ( tags Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtags Ġ= ĠNet Label . Tags () ĊĠĠĠĠĠĠĠ Ġset Label ( tags ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtags Ċ } Ċ Ċ /** Ċ Ġ* Ġè¿ĶåĽŀ Ok Http çļĦ tag ( éĢļè¿ĩ Class åĮº åĪĨ çļĦ tag ) Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT > ĠRequest . label (): ĠT ? Ġ{ ĊĠĠĠ Ġreturn Ġtag ( T :: class . java ) Ċ } Ċ Ċ /** Ċ Ġ* Ġè¿ĶåĽŀ Ok Http çļĦ tag ( éĢļè¿ĩ Class åĮº åĪĨ çļĦ tag ) Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT > ĠRequest . Builder . label (): ĠT ? Ġ{ ĊĠĠĠ Ġreturn Ġlabels ()[ T :: class . java ] Ġas ? ĠT Ċ } Ċ Ċ /** Ċ Ġ* Ġè®¾ç½® Ok Http çļĦ tag ( éĢļè¿ĩ Class åĮº åĪĨ çļĦ tag ) Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT > ĠRequest . setLabel ( value : ĠT ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġval Ġlabels Ġ= Ġlabels () ĊĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlabels . remove ( T :: class . java ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġlabels [ T :: class . java ] Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġè®¾ç½® Ok Http çļĦ tag ( éĢļè¿ĩ Class åĮº åĪĨ çļĦ tag ) Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT > ĠRequest . Builder . setLabel ( value : ĠT ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġtag ( T :: class . java , Ġvalue ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ æłĩçŃ¾ éĽĨåĲĪ Ċ Ġ*/ Ċ fun ĠRequest . labels (): ĠMutable Map < Class <* >, ĠAny ?> Ġ{ ĊĠĠĠ Ġreturn ĠOk Http Utils . tags ( this ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ æłĩçŃ¾ éĽĨåĲĪ Ċ Ġ*/ Ċ fun ĠRequest . Builder . labels (): ĠMutable Map < Class <* >, ĠAny ?> Ġ{ ĊĠĠĠ Ġreturn ĠOk Http Utils . tags ( this ) Ċ } Ċ Ċ // </ editor - fold > Ċ Ċ // < editor - fold Ġdesc =" ä¸ĭè½½ "> Ċ /** Ċ Ġ* Ġå½ĵ æĮĩå®ļ ä¸ĭè½½ çĽ®å½ķ åŃĺåľ¨ åĲĮ åĲį æĸĩä»¶ æĺ¯ è¦ĨçĽĸ è¿ĺæĺ¯ è¿Ľè¡Į éĩį åĳ½åĲį , Ġ éĩį åĳ½åĲį è§ĦåĪĻ æĺ¯ : Ġ$ æĸĩä»¶ åĲį _ ($ åºı åı· ). $ åĲİ ç¼Ģ Ċ Ġ*/ Ċ fun ĠRequest . download Conflict Rename (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġlabel < Net Label . Download File Conflict Rename >() ?. enabled Ġ== Ġtrue Ċ } Ċ Ċ /** Ċ Ġ* Ġæĺ¯åĲ¦ è¿Ľè¡Į æł¡éªĮ æĸĩä»¶ md 5 , Ġå¦Ĥæŀľ æł¡éªĮ åĪĻ åĮ¹éħį ä¸Ĭ æĹ¢ é©¬ ä¸Ĭ è¿ĶåĽŀ æĸĩä»¶ èĢĮ ä¸įä¼ļ è¿Ľè¡Į ä¸ĭè½½ Ċ Ġ*/ Ċ fun ĠRequest . download Md 5 Verify (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġlabel < Net Label . Download File MD 5 Verify >() ?. enabled Ġ== Ġtrue Ċ } Ċ Ċ /** Ċ Ġ* Ġ ä¸ĭè½½ æĸĩä»¶ çĽ®å½ķ Ċ Ġ*/ Ċ fun ĠRequest . download File Dir (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġlabel < Net Label . Download File Dir >() ?. dir Ġ?: ĠNet Config . app . files Dir . absolute Path Ċ } Ċ Ċ /** Ċ Ġ* Ġ ä¸ĭè½½ æĸĩä»¶ åĲį Ċ Ġ*/ Ċ fun ĠRequest . download FileName (): ĠString ? Ġ{ ĊĠĠĠ Ġreturn Ġlabel < Net Label . Download FileName >() ?. name Ċ } Ċ Ċ /** Ċ Ġ* Ġ ä¸ĭè½½ çļĦæĸĩä»¶ åĲįç§° æĺ¯åĲ¦ è§£ çłģ Ċ Ġ* Ġ ä¾ĭ å¦Ĥä¸ĭ è½½ çļĦæĸĩä»¶ åĲį å¦Ĥæŀľ æĺ¯ ä¸Ńæĸĩ , Ġ æľįåĬ¡åĻ¨ ä¼łè¾ĵ ç»Ļ ä½łçļĦ ä¼ļ æĺ¯ è¢« URL ç¼ĸçłģ çļĦ åŃĹç¬¦ä¸² . Ġ ä½ł ä½¿çĶ¨ URL è§£ çłģ åĲİ æīį æĺ¯ åı¯ è¯» çļĦ ä¸Ńæĸĩ åĲįç§° Ċ Ġ*/ Ċ fun ĠRequest . download FileName Decode (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġlabel < Net Label . Download FileName Decode >() ?. enabled Ġ== Ġtrue Ċ } Ċ Ċ /** Ċ Ġ* Ġ ä¸ĭè½½ æĺ¯åĲ¦ ä½¿çĶ¨ ä¸´ æĹ¶ æĸĩä»¶ Ċ Ġ* Ġ éģ¿åħį ä¸ĭè½½ å¤±è´¥ åĲİ è¦ĨçĽĸ åĲĮ åĲį æĸĩä»¶ æĪĸèĢħ æĹłæ³ķ åĪ¤ åĪ« æĺ¯åĲ¦ å·² ä¸ĭè½½ å®Įæķ´ , Ġ ä»ħ åľ¨ ä¸ĭè½½ å®Įæķ´ ä»¥ åĲİ æīį ä¼ļ æĺ¾ç¤º ä¸º åİŁ æľī æĸĩä»¶ åĲį Ċ Ġ* Ġ ä¸´ æĹ¶ æĸĩä»¶ åĳ½åĲį è§ĦåĪĻ : Ġæĸĩä»¶ åĲį Ġ+ Ġ. net - download Ċ Ġ* ĠĠĠĠĠ Ġ ä¸ĭè½½ æĸĩä»¶ åĲį : Ġinstall . apk , Ġ ä¸´ æĹ¶ æĸĩä»¶ åĲį : Ġinstall . apk . net - download Ċ Ġ*/ Ċ fun ĠRequest . download TempFile (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġlabel < Net Label . Download TempFile >() ?. enabled Ġ== Ġtrue Ċ } Ċ // </ editor - fold > Ċ Ċ // < editor - fold Ġdesc =" è¿Ľ åº¦ çĽĳåĲ¬ "> Ċ /** Ċ Ġ* Ġ åħ¨éĥ¨ çļĦ ä¸Ĭä¼ł çĽĳåĲ¬ åĻ¨ Ċ Ġ*/ Ċ fun ĠRequest . upload Listeners (): ĠConcurrent Linked Queue < Progress Listener > Ġ{ ĊĠĠĠ Ġvar Ġupload Listeners Ġ= Ġlabel < Net Label . Upload Listeners >() ĊĠĠĠ Ġif Ġ( upload Listeners Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupload Listeners Ġ= ĠNet Label . Upload Listeners () ĊĠĠĠĠĠĠĠ Ġset Label ( upload Listeners ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġupload Listeners Ċ } Ċ Ċ /** Ċ Ġ* Ġ åħ¨éĥ¨ çļĦ ä¸Ĭä¼ł çĽĳåĲ¬ åĻ¨ Ċ Ġ*/ Ċ fun ĠRequest . Builder . upload Listeners (): ĠConcurrent Linked Queue < Progress Listener > Ġ{ ĊĠĠĠ Ġvar Ġupload Listeners Ġ= Ġlabel < Net Label . Upload Listeners >() ĊĠĠĠ Ġif Ġ( upload Listeners Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupload Listeners Ġ= ĠNet Label . Upload Listeners () ĊĠĠĠĠĠĠĠ Ġset Label ( upload Listeners ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġupload Listeners Ċ } Ċ Ċ /** Ċ Ġ* Ġ åħ¨éĥ¨ çļĦ ä¸ĭè½½ çĽĳåĲ¬ åĻ¨ Ċ Ġ*/ Ċ fun ĠRequest . download Listeners (): ĠConcurrent Linked Queue < Progress Listener > Ġ{ ĊĠĠĠ Ġvar Ġdownload Listeners Ġ= Ġlabel < Net Label . Download Listeners >() ĊĠĠĠ Ġif Ġ( download Listeners Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdownload Listeners Ġ= ĠNet Label . Download Listeners () ĊĠĠĠĠĠĠĠ Ġset Label ( download Listeners ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġdownload Listeners Ċ } Ċ Ċ /** Ċ Ġ* Ġ åħ¨éĥ¨ çļĦ ä¸ĭè½½ çĽĳåĲ¬ åĻ¨ Ċ Ġ*/ Ċ fun ĠRequest . Builder . download Listeners (): ĠConcurrent Linked Queue < Progress Listener > Ġ{ ĊĠĠĠ Ġvar Ġdownload Listeners Ġ= Ġlabel < Net Label . Download Listeners >() ĊĠĠĠ Ġif Ġ( download Listeners Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdownload Listeners Ġ= ĠNet Label . Download Listeners () ĊĠĠĠĠĠĠĠ Ġset Label ( download Listeners ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġdownload Listeners Ċ } Ċ Ċ /** Ċ Ġ* Ġæ·»åĬł ä¸Ĭä¼ł çĽĳåĲ¬ åĻ¨ Ċ Ġ*/ Ċ fun ĠRequest . add Upload Listener ( progress Listener : ĠProgress Listener ) Ġ{ ĊĠĠĠ Ġupload Listeners (). add ( progress Listener ) Ċ } Ċ Ċ /** Ċ Ġ* Ġæ·»åĬł ä¸ĭè½½ çĽĳåĲ¬ åĻ¨ Ċ Ġ*/ Ċ fun ĠRequest . add Download Listener ( progress Listener : ĠProgress Listener ) Ġ{ ĊĠĠĠ Ġdownload Listeners (). add ( progress Listener ) Ċ } Ċ // </ editor - fold > Ċ Ċ /** Ċ Ġ* Ġè¿ĶåĽŀ è¯·æ±Ĥ åĮħåĲ« çļĦ è½¬æį¢ åĻ¨ Ċ Ġ*/ Ċ fun ĠRequest . converter (): ĠNet Converter Ġ{ ĊĠĠĠ Ġreturn Ġlabel < Net Converter >() Ġ?: ĠNet Config . converter Ċ } Ċ Ċ /** Ċ Ġ* Ġè®¾ç½® è½¬æį¢ åĻ¨ Ċ Ġ*/ Ċ fun ĠRequest . Builder . set Converter ( converter : ĠNet Converter ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġset Label ( converter ) Ċ } Ċ Ċ /** Ċ Ġ* Ġè¯·æ±Ĥ æĹ¥å¿Ĺ ä¿¡æģ¯ Ċ Ġ* Ġåıª ä¼ļ è¾ĵåĩº Ġapplication / x - www - form - urlencoded , Ġapplication / json , Ġtext /` *` ĠçļĦ è¯·æ±Ĥ ä½ĵ ç±»åŀĭ æĹ¥å¿Ĺ Ċ Ġ* Ġ@ param Ġurl Decode Ġæĺ¯åĲ¦ è¿Ľè¡Į ĠUTF - 8 ĠURL Decode Ċ Ġ*/ Ċ fun ĠRequest . log String ( byte Count : ĠLong Ġ= Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 , Ġurl Decode : ĠBoolean Ġ= Ġtrue ): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġrequest Body Ġ= Ġbody Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġval Ġmedia Type Ġ= Ġrequest Body . contentType () ĊĠĠĠ Ġval Ġsupport Subtype Ġ= ĠarrayOf (" plain ", Ġ" json ", Ġ" xml ", Ġ" html "). contains ( media Type ?. subtype ) ĊĠĠĠ Ġval Ġbody String Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Body Ġis ĠMultip art Body Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Body . parts . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuf . append ("${ it . name ()} Ġ= Ġ${ it . value ()} Ġ\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuf . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrequest Body Ġis ĠForm Body Ġ|| Ġsupport Subtype Ġ-> Ġrequest Body . peek String ( byte Count ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"$ media Type Ġdoes Ġnot Ġsupport Ġoutput Ġlogs " ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( url Decode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠURL Decoder . decode ( body String , Ġ" UTF - 8 ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody String ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġbody String ĊĠĠĠ Ġ} Ċ }