Android Make Http/Json Request With OkHttp (Kotlin)

July 10, 2019

Dependencies

// implementation "com.squareup.okhttp3:okhttp:3.14.2"
implementation "com.squareup.okhttp3:okhttp:4.0.0"

NOTE: ProGuard Configuration

JSON Get Request

val BASE_URL = "https://api.unsplash.com"
val ACCESS_KEY = "..."

val path = "/photos/$id"
val uri = Uri.parse(BASE_URL)
    .buildUpon()
    .appendEncodedPath(path)
    //.appendPath(path)
    .build()

val client = OkHttpClient()
val request = Request.Builder()
    .url(uri.toString())
    .addHeader("Accept-Version", "v1")
    .addHeader("Authorization", "Client-ID $ACCESS_KEY")
    .get()
    .build()

val response = client.newCall(request).execute()
val jsonDataString = response.body()?.string()

val json = JSONObject(jsonDataString)
if (!response.isSuccessful) {
    val errors = json.getJSONArray("errors").join(", ")
    throw Exception(errors)
}
val rawUrl = json.getJSONObject("urls").getString("raw")

References:

This work is licensed under a
Creative Commons Attribution-NonCommercial 4.0 International License.