Bird
Raised Fist0
Android Kotlinmobile~10 mins

GET and POST requests in Android Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a GET request using OkHttp.

Android Kotlin
val client = OkHttpClient()
val request = Request.Builder()
    .url("https://api.example.com/data")
    .[1]()
    .build()
Drag options to blanks, or click blank then click option'
Apost
Bput
Cget
Ddelete
Attempts:
3 left
💡 Hint
Common Mistakes
Using post() instead of get() for fetching data.
Forgetting to call build() after setting the method.
2fill in blank
medium

Complete the code to create a POST request with a JSON body.

Android Kotlin
val JSON = "application/json; charset=utf-8".toMediaType()
val jsonBody = "{\"name\": \"John\"}"
val body = jsonBody.toRequestBody([1])
val request = Request.Builder()
    .url("https://api.example.com/users")
    .post(body)
    .build()
Drag options to blanks, or click blank then click option'
AJSON
Bnull
CMediaType.parse(JSON)
DjsonBody
Attempts:
3 left
💡 Hint
Common Mistakes
Passing null instead of the media type.
Passing the raw JSON string instead of the media type.
3fill in blank
hard

Fix the error in the code to execute the request asynchronously.

Android Kotlin
client.newCall(request).[1](object : Callback {
    override fun onFailure(call: Call, e: IOException) {
        println("Request failed")
    }
    override fun onResponse(call: Call, response: Response) {
        println(response.body?.string())
    }
})
Drag options to blanks, or click blank then click option'
Aenqueue
Bsend
Ccall
Dexecute
Attempts:
3 left
💡 Hint
Common Mistakes
Using execute() which blocks the main thread.
Using a non-existent method like send().
4fill in blank
hard

Fill both blanks to create a GET request and print the response body safely.

Android Kotlin
val request = Request.Builder()
    .url("https://api.example.com/info")
    .[1]()
    .build()

client.newCall(request).enqueue(object : Callback {
    override fun onResponse(call: Call, response: Response) {
        val body = response.body?.[2]()
        println(body ?: "No response body")
    }
    override fun onFailure(call: Call, e: IOException) {}
})
Drag options to blanks, or click blank then click option'
Aget
Bpost
Cstring
Dbytes
Attempts:
3 left
💡 Hint
Common Mistakes
Using post() instead of get() for a GET request.
Using bytes() which returns raw bytes instead of a string.
5fill in blank
hard

Fill all three blanks to create a POST request with JSON body and handle the response.

Android Kotlin
val JSON = "application/json; charset=utf-8".toMediaType()
val jsonData = "{\"age\": 30}"
val body = jsonData.toRequestBody([1])
val request = Request.Builder()
    .url("https://api.example.com/update")
    .[2](body)
    .build()

client.newCall(request).enqueue(object : Callback {
    override fun onResponse(call: Call, response: Response) {
        val result = response.body?.[3]()
        println(result ?: "Empty response")
    }
    override fun onFailure(call: Call, e: IOException) {}
})
Drag options to blanks, or click blank then click option'
AJSON
Bpost
Cstring
Dget
Attempts:
3 left
💡 Hint
Common Mistakes
Using get() instead of post() for sending data.
Passing null or wrong media type to toRequestBody().

Practice

(1/5)
1. What is the main purpose of a GET request in Android Kotlin networking?
easy
A. To fetch data from a server
B. To send data to a server
C. To update the UI thread
D. To store data locally

Solution

  1. Step 1: Understand GET request purpose

    A GET request is used to retrieve or fetch data from a server without changing any data on the server.
  2. Step 2: Compare with other request types

    POST requests send data to the server, unlike GET which only fetches data.
  3. Final Answer:

    To fetch data from a server -> Option A
  4. Quick Check:

    GET = fetch data [OK]
Hint: GET fetches data; POST sends data [OK]
Common Mistakes:
  • Confusing GET with POST request purpose
  • Thinking GET modifies server data
  • Mixing UI updates with network requests
2. Which of the following is the correct way to start a POST request using Kotlin's HttpURLConnection?
easy
A. connection.requestMethod = "GET"
B. connection.requestMethod = "POST"
C. connection.method = "POST"
D. connection.setRequestMethod("GET")

Solution

  1. Step 1: Identify correct property for request method

    In Kotlin, HttpURLConnection uses requestMethod property to set the HTTP method.
  2. Step 2: Confirm correct method value for POST

    To make a POST request, set requestMethod to "POST" exactly.
  3. Final Answer:

    connection.requestMethod = "POST" -> Option B
  4. Quick Check:

    POST method set by requestMethod = "POST" [OK]
Hint: Use requestMethod property with "POST" string [OK]
Common Mistakes:
  • Using wrong property name like method
  • Setting GET instead of POST
  • Using Java-style setRequestMethod() in Kotlin
3. What will be the output of this Kotlin code snippet when making a GET request?
val url = URL("https://example.com/data")
val connection = url.openConnection() as HttpURLConnection
connection.requestMethod = "GET"
val responseCode = connection.responseCode
println(responseCode)
medium
A. 500
B. 404
C. 200
D. Compilation error

Solution

  1. Step 1: Understand the code flow

    The code opens a connection to the URL and sets the method to GET, then reads the response code from the server.
  2. Step 2: Predict typical HTTP response code

    Assuming the URL is valid and reachable, a successful GET request returns HTTP status code 200.
  3. Final Answer:

    200 -> Option C
  4. Quick Check:

    Successful GET returns 200 [OK]
Hint: 200 means OK response from server [OK]
Common Mistakes:
  • Assuming responseCode is a string
  • Confusing 404 (not found) with success
  • Thinking code will not compile
4. Identify the error in this Kotlin code snippet for sending a POST request:
val url = URL("https://example.com/api")
val connection = url.openConnection() as HttpURLConnection
connection.requestMethod = "POST"
val outputStream = connection.outputStream
outputStream.write("data=hello".toByteArray())
outputStream.flush()
outputStream.close()
medium
A. Missing setting connection.doOutput = true
B. Using write() instead of writeBytes()
C. Incorrect requestMethod value
D. Not reading the response code

Solution

  1. Step 1: Check POST request setup

    For POST requests, doOutput must be set to true to send data in the request body.
  2. Step 2: Identify missing property

    The code does not set connection.doOutput = true, so writing to outputStream will fail or not send data.
  3. Final Answer:

    Missing setting connection.doOutput = true -> Option A
  4. Quick Check:

    doOutput = true needed for POST body [OK]
Hint: Set doOutput true before writing POST data [OK]
Common Mistakes:
  • Forgetting doOutput = true for POST
  • Confusing write() method usage
  • Ignoring response reading after POST
5. You want to send JSON data in a POST request using Kotlin. Which sequence correctly sets up the connection and sends the JSON string {"name":"John"}?
hard
A. Set requestMethod to "GET", write JSON bytes to outputStream, set doOutput = true
B. Set requestMethod to "POST", set doOutput = false, write JSON string directly to connection
C. Set requestMethod to "POST", write JSON bytes to outputStream without setting doOutput, set Content-Type header to "text/plain"
D. Set requestMethod to "POST", set doOutput = true, set Content-Type header to "application/json", write JSON bytes to outputStream

Solution

  1. Step 1: Correct HTTP method and output setup

    For sending data, requestMethod must be "POST" and doOutput must be true to allow writing data.
  2. Step 2: Set proper headers and write data

    Content-Type header should be "application/json" to indicate JSON data. Then write JSON bytes to outputStream.
  3. Final Answer:

    Set requestMethod to "POST", set doOutput = true, set Content-Type header to "application/json", write JSON bytes to outputStream -> Option D
  4. Quick Check:

    POST + doOutput + JSON header + write bytes [OK]
Hint: POST JSON needs doOutput true and JSON content-type [OK]
Common Mistakes:
  • Using GET method to send data
  • Not setting Content-Type header correctly
  • Forgetting doOutput = true
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard