okhttp kotlin code example

Example 1: okhttp3 application/json get kotlin

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")

Example 2: okhttp kotlin example

private val client = OkHttpClient()

  fun run() {
    val request = Request.Builder()
        .url("http://publicobject.com/helloworld.txt")
        .build()

    client.newCall(request).enqueue(object : Callback {
      override fun onFailure(call: Call, e: IOException) {
        e.printStackTrace()
      }

      override fun onResponse(call: Call, response: Response) {
        response.use {
          if (!response.isSuccessful) throw IOException("Unexpected code $response")

          for ((name, value) in response.headers) {
            println("$name: $value")
          }

          println(response.body!!.string())
        }
      }
    })
  }