Kotlin:
HTTP-pyynnön lähettäminen perusautentikoinnilla
How to - Kuinka tehdä:
import java.net.HttpURLConnection
import java.net.URL
import java.util.Base64
fun sendGetRequestWithBasicAuth(url: String, username: String, password: String) {
val connection = URL(url).openConnection() as HttpURLConnection
val auth = Base64.getEncoder().encodeToString("$username:$password".toByteArray())
connection.requestProperty["Authorization"] = "Basic $auth"
connection.connect()
val responseCode = connection.responseCode
val responseMessage = if (responseCode == HttpURLConnection.HTTP_OK) {
connection.inputStream.bufferedReader().readText()
} else {
"Error $responseCode: ${connection.responseMessage}"
}
println("Response: $responseMessage")
}
fun main() {
val url = "http://example.com/api/data"
val username = "user123"
val password = "pass456"
sendGetRequestWithBasicAuth(url, username, password)
}
Sample output:
Response: { "data": "Confidential data..." }
Deep Dive - Syväsukellus:
Perusautentikointi on yksinkertainen HTTP:n autentikointimekanismi, joka kehitettiin internetin alkuaikoina. Se ei ole erityisen turvallinen, sillä tunnistetiedot lähetetään BASE64-koodattuna, mikä on helposti purettavissa. Siksi suositellaan käyttämään vahvempia menetelmiä, kuten OAuth 2.0, kun mahdollista. Javassa HttpURLConnection on yksi tapa lähettää HTTP-pyynnöt, mutta Kotlinissa voi myös käyttää kotlinx.coroutines ja okhttp kolmannen osapuolen kirjastoja, jotka tukevat asynkronista suoritusta ja ovat kohtuullisen helppokäyttöisiä.