我使用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
答案 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())
}
})
因此,您可以看到我从原始请求对象中删除了标头,而是覆盖了凭据。确保在调用响应对象之前执行此操作。