Kotlin:
Inviare una richiesta http con autenticazione di base
How to:
In Kotlin, possiamo utilizzare HttpURLConnection
per inviare richieste HTTP con autenticazione di base.
import java.net.HttpURLConnection
import java.net.URL
import java.util.Base64
fun main() {
val url = URL("http://tuo.server.com/api")
val username = "tuonomeutente"
val password = "tuapassword"
with(url.openConnection() as HttpURLConnection) {
val creds = "$username:$password"
val auth = Base64.getEncoder().encodeToString(creds.toByteArray())
setRequestProperty("Authorization", "Basic $auth")
println("Response Code: $responseCode")
println("Response Message: $responseMessage")
}
}
Output potrebbe essere simile a:
Response Code: 200
Response Message: OK
Deep Dive
L’autenticazione di base HTTP è uno dei metodi più semplici: codifica username e password in Base64 e le inserisce nell’header della richiesta HTTP. Nato negli anni ‘90, non è il più sicuro perché può essere facilmente decodificato. Alternative moderne includono OAuth e JWT che forniscono maggiore sicurezza attraverso token.
HttpURLConnection
è parte del JDK standard, ma librerìe come OkHttp o Retrofit rendono la codifica meno verbosa e più gestibile. Ecco un esempio con OkHttp:
val client = OkHttpClient()
val credentials = Credentials.basic("username", "password")
val request = Request.Builder()
.url("http://your.server.com/api")
.header("Authorization", credentials)
.build()
client.newCall(request).execute().use { response ->
println(response.code)
println(response.message)
}