/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 . Ċ Ġ*/ Ċ Ċ @ file : Suppress (" Blocking Method In Non Blocking Context ") Ċ Ċ package Ġcom . example . android . we arable . oauth . util Ċ Ċ import Ġandroid . util . Log Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . InputStream Reader Ċ import Ġjava . net . Http URLConnection Ċ import Ġjava . net . URL Ċ import Ġjava . net . URL Encoder Ċ Ċ /** Ċ Ġ* ĠSimple Ġimplementation Ġof Ġa ĠPOST Ġrequest . ĠNorm ally Ġyou 'd Ġuse Ġa Ġlibrary Ġto Ġdo Ġthese Ġrequests . Ċ Ġ*/ Ċ suspend Ġfun Ġdo Post Request ( ĊĠĠĠ Ġurl : ĠString , ĊĠĠĠ Ġparams : ĠMap < String , ĠString >, ĊĠĠĠ Ġdispatcher : ĠCor outine Dispatcher Ġ= ĠDispatch ers . IO Ċ ): ĠJSONObject Ġ{ ĊĠĠĠ Ġreturn Ġwith Context ( dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconn Ġ= Ġ( URL ( url ). open Connection () Ġas ĠHttp URLConnection ) ĊĠĠĠĠĠĠĠ Ġval Ġpost Data Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġparams ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( post Data . isNotEmpty ()) Ġpost Data . append ('& ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Data . append ( URL Encoder . encode ( key , Ġ" UTF - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Data . append (' =') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Data . append ( URL Encoder . encode ( value , Ġ" UTF - 8 ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpost Data Bytes Ġ= Ġpost Data . toString (). toByteArray ( charset (" UTF - 8 ")) ĊĊĠĠĠĠĠĠĠ Ġconn . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Method Ġ= Ġ" POST " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Request Property (" Content - Type ", Ġ" application / x - www - form - urlencoded ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Request Property (" Content - Length ", Ġpost Data Bytes . size . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Output Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . write ( post Data Bytes ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġinput Reader Ġ= ĠBufferedReader ( InputStream Reader ( conn . inputStream , Ġ" UTF - 8 ")) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġinput Reader . read Text () ĊĊĠĠĠĠĠĠĠ ĠLog . d (" Post Request Util ", Ġ" Response : Ġ$ response ") ĊĊĠĠĠĠĠĠĠ ĠJSONObject ( response ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠSimple Ġimplementation Ġof Ġa ĠGET Ġrequest . ĠNorm ally Ġyou 'd Ġuse Ġa Ġlibrary Ġto Ġdo Ġthese Ġrequests . Ċ Ġ*/ Ċ suspend Ġfun Ġdo GetRequest ( ĊĠĠĠ Ġurl : ĠString , ĊĠĠĠ Ġrequest Headers : ĠMap < String , ĠString >, ĊĠĠĠ Ġdispatcher : ĠCor outine Dispatcher Ġ= ĠDispatch ers . IO Ċ ): ĠJSONObject Ġ{ ĊĠĠĠ Ġreturn Ġwith Context ( dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconn Ġ= Ġ( URL ( url ). open Connection () Ġas ĠHttp URLConnection ) ĊĠĠĠĠĠĠĠ Ġrequest Headers . forEach Ġ{ Ġ( key , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconn . setRequest Property ( key , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinput Reader Ġ= ĠBufferedReader ( InputStream Reader ( conn . inputStream , Ġ" UTF - 8 ")) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġinput Reader . read Text () ĊĊĠĠĠĠĠĠĠ ĠLog . d (" Request Util ", Ġ" Response : Ġ$ response ") ĊĊĠĠĠĠĠĠĠ ĠJSONObject ( response ) ĊĠĠĠ Ġ} Ċ } Ċ