Probleme HTTPClient et Basic Auth
Salut à tous!
Je fais des tests et j'ai un petit soucis avec HTTPClient et le basic auth (utilisation de l'authenticator) que je ne comprends pas :
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
// DECLARE AUTHENTICATOR
final var authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USERNAME, USERPASSWORD.toCharArray());
}
};
// DECLARE CLIENT
final var client = HttpClient.newBuilder()
.authenticator(authenticator)
.connectTimeout(Duration.ofSeconds(10))
.build();
// BUILD REQUEST
final var request =
HttpRequest
.newBuilder(URI.create(HOST + "/test"))
.header("Content-Type", "text/plain")
.POST(BodyPublishers.ofString("test message"))
.build();
// SEND REQUEST
client
.sendAsync(request, BodyHandlers.ofString())
.thenApply(HttpResponse::statusCode)
.thenAccept(System.out::println)
.get(); |
et a l'execution j'ai l'erreur suivante:
Code:
1 2 3 4
|
java.io.IOException: HTTP/1.1 header parser received no bytes
...
Caused by: java.io.EOFException: EOF reached while reading |
J'ai essayé de changer la version du client HTTP_1_1 / HTTP_2. Ca ne change rien. Mon authenticator est foireux
Pour l'instant j'ai contourné le soucis en ajoutant la ligne suivante a ma requete :
Code:
1 2
|
.header("Authorization", buildBasicAuthHeader(USERNAME, USERPASSWORD)) |
Note : buildBasicAuthHeader retourne "Basic base64duLong:Pwd"
mais je trouve ca deguelasse
avez vous une idée de ce qu'il se passe ?
(testé avec java 15 / 13 et 11)
Par avance merci pour vos retours