使用基本认证发送 HTTP 请求

Kotlin:
使用基本认证发送 HTTP 请求

How to:

Kotlin中使用HttpURLConnection和Base64编码来实现带基本认证的HTTP请求。

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.apply {
        requestMethod = "GET"
        setRequestProperty("Authorization", "Basic $auth")
        inputStream.bufferedReader().use { reader ->
            println(reader.readText())
        }
    }
}

fun main() {
    val url = "https://api.example.com/data"
    val username = "user"
    val password = "pass"
    
    sendGetRequestWithBasicAuth(url, username, password)
}
// Sample Output:
// {"data": "some secure data"}

Deep Dive

基本认证(Basic Authentication)是1990年代初就出现的一种HTTP认证方式。虽然有更安全的方法,如OAuth2,它依然在APIs中常被用于内部或低安全要求的场合。这种认证方式将用户名和密码用冒号连接后进行Base64编码,附加在请求头的Authorization字段中发送给服务器。虽简单,但Base64不是加密方式,所以通信应始终在HTTPS协议下进行,保证传输的安全性。

See Also