Recibo un error 407 al usar scalajHTTP. Leí el repositorio y parece que debería poder pasar las credenciales de autenticación básicas como un valor codificado en base64. También intenté usar el método auxiliar descrito en los problemas de GitHub .proxyAuth, pero eso ya no es parte de HTTPRequest en ScalaJ según los mensajes de error (además de que no está en la documentación)

¿Algunas ideas? Mi URL de punto final es HTTPS y mi proxy (para contexto adicional)

 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
Joe 15 nov. 2017 a las 03:27

2 respuestas

La mejor respuesta

Esto se publicó en Github pero aún no se resolvió, https://github.com/scalaj/ scalaj-http / issues / 87

1
phuong 28 nov. 2017 a las 06:04

Encontré una solución a este problema. Investigué y después de probar las bibliotecas de cliente http, seguí recibiendo errores 407 a pesar de que todos admiten la autenticación de proxy. De todos modos, terminé teniendo que hacer lo siguiente.

Añadir

import java.net.{Authenticator,PasswordAuthentication}

Y el cuerpo del código modificado que anteriormente se ve así:

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())
 }
})

Como puede ver, eliminé el encabezado del objeto de solicitud original y en su lugar anulé las credenciales. Asegúrese de hacer esto antes de llamar al objeto de respuesta.

0
Joe 17 nov. 2017 a las 16:54