Kotlin:
Skicka en HTTP-förfrågan med Basic-autentisering
Så här gör man:
Här är ett exempel på hur man skickar en HTTP-förfrågan med basic-autentisering i Kotlin med hjälp av java.net.HttpURLConnection
:
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 credentials = "$username:$password"
val authHeaderValue = "Basic " + Base64.getEncoder().encodeToString(credentials.toByteArray())
connection.requestMethod = "GET"
connection.setRequestProperty("Authorization", authHeaderValue)
val responseCode = connection.responseCode
println("Response Code: $responseCode")
// Läs svaret om förfrågan lyckades
if (responseCode == HttpURLConnection.HTTP_OK) {
connection.inputStream.bufferedReader().use { reader ->
println("Response: ${reader.readText()}")
}
} else {
println("Failed to authenticate.")
}
}
fun main() {
val testUrl = "https://example.com/protected"
val username = "user"
val password = "password"
sendGetRequestWithBasicAuth(testUrl, username, password)
}
Output:
Response Code: 200
Response: {response from the server}
Eller så använder man ett bibliotek som OkHttp
för att göra processen smidigare:
import okhttp3.Credentials
import okhttp3.OkHttpClient
import okhttp3.Request
fun sendGetRequestWithOkHttp(url: String, username: String, password: String) {
val client = OkHttpClient()
val credentials = Credentials.basic(username, password)
val request = Request.Builder()
.url(url)
.header("Authorization", credentials)
.build()
client.newCall(request).execute().use { response ->
println("Response Code: ${response.code}")
println("Response: ${response.body?.string()}")
}
}
fun main() {
val testUrl = "https://example.com/protected"
val username = "user"
val password = "pass"
sendGetRequestWithOkHttp(testUrl, username, password)
}
Output:
Response Code: 200
Response: {response from the server}
Fördjupning
Basic-autentisering finns länge och fungerar genom att man använder Base64
för att koda användaruppgifter. Att det är enkelt är bra, men säkerheten är inte toppen då Base64
inte är kryptering. HTTPS är ett måste när detta används.
Moderna alternativ till basic-autentisering inkluderar OAuth och API-nycklar. De erbjuder bättre säkerhet och flexibilitet, men kan vara mer komplext att implementera och förvalta.
När man implementerar basic-autentisering är det viktigt att hantera lösenord korrekt. Lagra aldrig okrypterade lösenord och kom ihåg att autentiseringsuppgifterna alltid ska skickas över en säker anslutning.