Scala 授权 header - Akka HTTP IllegalArgumentException

Scala Authorization header - Akka HTTP IllegalArgumentException

我正在尝试在 Scala 中请求发送 user/pass:

def makeRequestWithRadiusHeader(header: String) = {
    val urlEncHeaderVal = java.net.URLEncoder.encode(s"Basic $header", "utf-8")
    val request = exampleNmsRequest() ~> addHeader("Authorization", urlEncHeaderVal)

    makeRequest(request)
  }

其中 header 是 "user:password" 并且在 addHeader 上我得到这样的错误:

java.lang.IllegalArgumentException: Illegal HTTP header 'Authorization': Invalid input '%', expected token68-start, '=', OWS or 'EOI' (line 1, column 11): Basic+user%3Apassword

如果我尝试不编码,我会得到与“:”相同的错误

我已经解决了它给函数 makeRequestWithRadiusHeader 一个 base64 转换参数。

val validRadiusHeader = BaseEncoding.base64().encode("aladdin:OpenSesame".getBytes(Charsets.UTF_8))
val response = makeRequestWithRadiusHeader(validRadiusHeader)

这种方式效果很好。这是基本访问身份验证的工作方式。