Skip to main content

08 - Android RESt api's

Using REST apis - KTor

Go to section 14

Using REST apis - Volley - OLD

Add library for Volley

dependencies {
implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.android.volley:volley:1.2.1'
}

Volley singleton for handling requests - OLD

import android.content.Context
import com.android.volley.Request
import com.android.volley.RequestQueue
import com.android.volley.toolbox.Volley

class HttpSingletonHandler(context: Context) {
companion object {
private val TAG = HttpSingletonHandler::class.java.simpleName

@Volatile
private var INSTANCE: HttpSingletonHandler? = null

fun getInstance(context: Context) =
INSTANCE ?: synchronized(this) {
INSTANCE ?: HttpSingletonHandler(context).also {
INSTANCE = it
}
}
}

val requestQueue: RequestQueue by lazy {
// applicationContext is key, it keeps you from leaking the
// Activity or BroadcastReceiver if someone passes one in.
Volley.newRequestQueue(context.applicationContext)
}

fun <T> addToRequestQueue(req: Request<T>) {
req.tag = TAG
requestQueue.add(req)
}

fun cancelPendingRequests(tag: Any) {
if (requestQueue != null) {
requestQueue.cancelAll(tag)
}
}
}

Volley request - OLD

    fun onClickregister(view: android.view.View) {
var url = "https://sportmap.akaver.com/api/v1/Account/Register"
var handler = HttpSingletonHandler.getInstance(this)

var httpRequest = object : StringRequest(
Request.Method.POST,
url,
Response.Listener { response -> Log.d("Response.Listener", response) },
Response.ErrorListener { error -> Log.d("Response.ErrorListener", "${error.message} ${error.networkResponse.statusCode}")}
){
override fun getBodyContentType(): String {
return "application/json"
}

override fun getBody(): ByteArray {
val params = HashMap<String, String>()
params["email"] = "user123456789@user.ee"
params["password"] = "Foo.bar.1"
params["firstName"] = "firstName"
params["lastName"] = "lastName"

var body = JSONObject(params as Map<*, *>).toString()
Log.d("getBody", body)

return body.toByteArray()
}
}

handler.addToRequestQueue(httpRequest)
}