package Ġcom . github . s ata h ippy . mail ru Ċ Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . RequestBody Ċ import Ġretrofit 2 . Converter Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġjava . lang . reflect . Type Ċ import Ġjava . net . URL Encoder Ċ Ċ class ĠForm Url Encoded Converter Factory Ġ: ĠConverter . Factory () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġrequest Body Converter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠType , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameter Annotations : ĠArray < Annotation >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Annotations : ĠArray < Annotation >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit : ĠRet rofit ĊĠĠĠ Ġ): ĠConverter < *, ĠRequest Body >? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(!( type Ġis ĠClass <* >) Ġ|| Ġ! Form Url Encoded Request :: class . java . isAssignableFrom ( type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠForm Url Encoded Converter . INSTANCE ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠForm Url Encoded Converter Ġ: ĠConverter < Form Url Encoded Request , ĠRequest Body > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠMED IA _ TYPE Ġ= ĠMediaType . parse (" application / x - www - form - urlencoded ") ĊĠĠĠĠĠĠĠ Ġval ĠINSTANCE Ġ= ĠForm Url Encoded Converter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconvert ( value : ĠForm Url Encoded Request ): ĠRequest Body Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġurl encoded Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġfield Set Ġ= ĠGson Builder (). create (). toJson Tree ( value ). getAs JsonObject (). entrySet () ĊĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfield Set ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Key String Ġ= ĠURL Encoder . encode ( entry . key , Ġ" utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Value String Ġ= ĠURL Encoder . encode ( entry . value . getAs Json Primitive (). get AsString (), Ġ" utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl encoded Ġ+= Ġ"${ entry Key String } =${ entry Value String }& " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠRequest Body . create ( MEDIA _ TYPE , Ġurl encoded ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠForm Url Encoded Request