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 :
et a l'execution j'ai l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Note : buildBasicAuthHeader retourne "Basic base64duLong
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 .header("Authorization", buildBasicAuthHeader(USERNAME, USERPASSWORD))wd"
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
Partager