使用ScalajHTTP的代理授权标头

时间:2017-11-15 00:27:43

标签: scala http proxy

我使用scalajHTTP收到407错误。我通读了存储库,似乎我应该能够将基本身份验证凭据作为base64编码值传递。我也尝试使用GitHub问题.proxyAuth中描述的辅助方法,但根据错误消息(不在文档中),它不再是ScalaJ中HTTPRequest的一部分了

有什么想法吗?我的端点URL是HTTPS以及我的代理(用于其他上下文)

 val proxyHost= s"https://$forwardProxy"
 val requestForward = Http(url).postData(redactedSecret)
   .option(HttpOptions.allowUnsafeSSL)
   .headers(("Content-Type", "application/json"), ("Proxy-Authorization", s"Basic $proxyAuth"))
   .proxy(proxyHost, 8080).asString
 val responseForward: HttpResponse[String] = requestForward

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法。我在尝试http客户端库时和之后进行了研究,即使它们都支持代理身份验证,我仍然会收到407错误。无论如何,我最终还是要做以下事情。

添加

import java.net.{Authenticator,PasswordAuthentication}

以及我之前看到的修改过的代码体:

val requestForward: HttpRequest = Http(url).postData(data)
.header("Content-Type", "application/json")
.proxy(proxyHost, 8080)
.option(HttpOptions.allowUnsafeSSL)
Authenticator.setDefault(new Authenticator() {
 override def getPasswordAuthentication(): PasswordAuthentication = {
  new PasswordAuthentication( s"$username", s"$password".toCharArray())
 }
})

因此,您可以看到我从原始请求对象中删除了标头,而是覆盖了凭据。确保在调用响应对象之前执行此操作。