package Ġcom . ti amos u . fly . http . model Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Build Ċ import Ġandroid . text . TextUtils Ċ import Ġcom . blank j . util code . util . Device Utils Ċ import Ġcom . blank j . util code . util . Log Utils Ċ import Ġcom . blank j . util code . util . Utils Ċ import Ġcom . ti amos u . fly . http . utils . escape Params Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . Serializable Ċ import Ġjava . net . URL Encoder Ċ import Ġjava . text . ParseException Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġæı ı è¿° ï¼ļ å¤´ éĥ¨ åıĤæķ° Ċ Ġ* Ċ Ġ* Ġ@ author Ġt iam os u Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 2 / 2 6 . Ċ Ġ*/ Ċ class ĠHttp Headers Ġ: ĠSerializable Ġ{ ĊĊĠĠĠ Ġval Ġheaders Map : ĠLinkedHashMap < String , ĠString > Ġ= Ġlinked Map Of () ĊĊĠĠĠ Ġfun Ġput ( key : ĠString ?, Ġvalue : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( key Ġ!= Ġnull Ġ&& Ġvalue Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Map [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput ( headers : ĠMap < String ?, ĠString ?> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( headers ?. isNotEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Map . put All ( escape Params ( headers )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput ( headers : ĠHttp Headers ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( headers ?. headers Map ?. isNotEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset : ĠSet < Map . Entry < String , ĠString >> Ġ= Ġheaders . headers Map . entries ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Map . remove ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Map [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġheaders Map . isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġget ( key : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġheaders Map [ key ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove ( key : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġheaders Map . remove ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġheaders Map . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġnames : ĠSet < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġheaders Map . keys ĊĊĠĠĠ Ġfun ĠtoJSON String (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġheaders Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . put ( key , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Utils . e ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠjsonObject . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" HttpHeaders { headers Map =$ headers Map }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFORMAT _ HTTP _ DATA Ġ= Ġ" EEE , Ġdd ĠM MM Ġy ĠHH : mm : ss Ġ' GMT '" ĊĠĠĠĠĠĠĠ Ġval ĠGMT _ TIME _ ZONE : ĠTime Zone Ġ= ĠTime Zone . getTime Zone (" GMT ") ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ RESPONSE _ CODE Ġ= Ġ" Response Code " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ RESPONSE _ MESSAGE Ġ= Ġ" Response Message " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ ACCEPT Ġ= Ġ" Accept " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ ACCEPT _ ENCODING Ġ= Ġ" Accept - Encoding " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ VALUE _ ACCEPT _ ENCODING Ġ= Ġ" gzip , Ġdef late " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ ACCEPT _ LANGUAGE Ġ= Ġ" Accept - Language " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ CONTENT _ TYPE Ġ= Ġ" Content - Type " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ CONTENT _ LENGTH Ġ= Ġ" Content - Length " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ CONTENT _ ENCODING Ġ= Ġ" Content - Encoding " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ CONTENT _ DIS POSITION Ġ= Ġ" Content - Disposition " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ CONTENT _ RANGE Ġ= Ġ" Content - Range " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ RANGE Ġ= Ġ" Range " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ CACHE _ CONTROL Ġ= Ġ" Cache - Control " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ CONNECTION Ġ= Ġ" Connection " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ VALUE _ CONNECTION _ KEEP _ AL IVE Ġ= Ġ" keep - alive " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ VALUE _ CONNECTION _ CLOSE Ġ= Ġ" close " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ DATE Ġ= Ġ" Date " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ EXPI RES Ġ= Ġ" Expires " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ E _ TAG Ġ= Ġ" ET ag " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ PR AG MA Ġ= Ġ" Pr agma " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ IF _ MODI FIED _ SIN CE Ġ= Ġ" If - Modified - Since " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ IF _ NONE _ MATCH Ġ= Ġ" If - None - Match " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ LAST _ MODI FIED Ġ= Ġ" Last - Modified " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ LOCATION Ġ= Ġ" Location " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ USER _ AGENT Ġ= Ġ" User - Agent " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ COOKIE Ġ= Ġ" Cookie " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ COOKIE 2 Ġ= Ġ" Cookie 2 " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ SET _ COOKIE Ġ= Ġ" Set - Cookie " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHEAD _ KEY _ SET _ COOKIE 2 Ġ= Ġ" Set - Cookie 2 " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAccept - Language : Ġzh - CN , zh ; q = 0 . 8 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġaccept Language : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( field )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocale Ġ= ĠLocale . getDefault () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlanguage Ġ= Ġlocale . language ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcountry Ġ= Ġlocale . country ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccept Language Builder Ġ= ĠStringBuilder ( language ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( country )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Language Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ('- ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( country ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( language ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("; q = 0 . 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġaccept Language Builder . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUser - Agent : ĠMozilla / 5 . 0 Ġ( Linux ; ĠU ; ĠAndroid Ġ 5 . 0 . 2 ; Ġzh - cn ; ĠRed mi ĠNote Ġ 3 ĠBuild / L RX 2 2 G ) ĊĠĠĠĠĠĠĠĠ Ġ* ĠAppleWebKit / 5 3 7 . 3 6 Ġ( KHTML , Ġlike ĠGecko ) ĠVersion / 4 . 0 ĠMobile ĠSafari / 5 3 7 . 3 6 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ get : Suppress Lint (" Private Api ") ĊĠĠĠĠĠĠĠ Ġvar Ġuser Agent : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( field )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġweb UserAgent : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsys Res Cls Ġ= ĠClass . forName (" com . android . internal . R \$ string ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweb UserAgent Field Ġ= Ġsys Res Cls . getDeclared Field (" web _ user _ agent ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Id Ġ= Ġweb UserAgent Field [ null ] Ġas ? ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb UserAgent Ġ= Ġif Ġ( res Id Ġis ĠInt ) ĠUtils . getApp (). getString ( res Id ) Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ġ// ĠWe Ġhave Ġnothing Ġto Ġdo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( web UserAgent )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb UserAgent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Mozilla / 5 . 0 Ġ( Linux ; ĠU ; ĠAndroid Ġ% s ) ĠAppleWebKit / 5 3 3 . 1 Ġ( KHTML , Ġlike ĠGecko ) ĠVersion / 5 . 0 Ġ% s S afari / 5 3 3 . 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocale Ġ= ĠLocale . getDefault () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠStringBuffer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversion Ġ= ĠBuild . VERSION . RELEASE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( version . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ( version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// Ġdefault Ġto Ġ" 1 . 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" 1 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ("; Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlanguage Ġ= Ġlocale . language ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ( language . toLowerCase ( locale )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcountry Ġ= Ġlocale . country ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( country )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ("- ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ( country . toLowerCase ( locale )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġthe Ġmodel Ġfor Ġthe Ġrelease Ġbuild ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" REL " Ġ== ĠBuild . VERSION . COD ENAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠURL Encoder . encode ( Device Utils . getModel (), Ġ" UTF - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ("; Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ( model ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠBuild . ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" ĠBuild /") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= ĠString . format ( web UserAgent !! , Ġbuffer , Ġ" Mobile Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Date ( gmt Time : ĠString ?): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse GMT To Millis ( gmt Time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Date ( milliseconds : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġformat Millis To GMT ( milliseconds ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Expiration ( expires Time : ĠString ?): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse GMT To Millis ( expires Time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetLast Modified ( lastModified : ĠString ?): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse GMT To Millis ( lastModified ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġfirst Ġhttp 1 . 1 , Ġsecond Ġhttp 1 . 0 ĊĠĠĠĠĠĠĠ Ġfun Ġget Cache Control ( cache Control : ĠString ?, Ġpragma : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcache Control Ġ?: Ġpragma ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( ParseException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġparse GMT To Millis ( gmt Time : ĠString ?): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( gmt Time )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformatter Ġ= ĠSimpleDateFormat ( FORMAT _ HTTP _ DATA , ĠLocale . US ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformatter . time Zone Ġ= ĠGMT _ TIME _ ZONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġformatter . parse ( gmt Time !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdate ?. time Ġ?: Ġ 0 L ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġformat Millis To GMT ( milliseconds : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate ( milliseconds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsimple DateFormat Ġ= ĠSimpleDateFormat ( FORMAT _ HTTP _ DATA , ĠLocale . US ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple DateFormat . time Zone Ġ= ĠGMT _ TIME _ ZONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsimple DateFormat . format ( date ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }