J'essaie d'expérimenter avec HttpClient
de Java 9.Java 9 HttpClient avec sendAsyncMulti/multiResponseAsync
L'exemple de base comme dans HttpRequest's javadoc fonctionne sans problèmes:
HttpResponse response = HttpRequest.create(new URI("http://stackoverflow.com/"))
.version(java.net.http.HttpClient.Version.HTTP_2)
.followRedirects(HttpClient.Redirect.ALWAYS)
.GET()
.response();
int statusCode = response.statusCode();
String responseBody = response.body(HttpResponse.asString());
System.out.println("statusCode = " + statusCode);
System.out.println("responseBody = " + responseBody);
Cependant, en essayant d'utiliser sendAsyncMulti
, il ne fonctionne pas. Aucun fichier n'est créé dans E:\foo
, le println
après join
n'est pas atteint, il n'y a également aucune exception, bien que j'ai fondamentalement copié l'exemple de HttpResponse.multiFile
's Javadoc. Je m'attendais à ce que certaines réponses HTTP soient enregistrées dans ce répertoire. J'ai également essayé de supprimer le HTTP2 et followRedirects, d'autres URL comme google etc, mais cela n'a rien changé. Qu'est-ce que je fais mal?
CompletableFuture<Map<URI,Path>> cf =
HttpRequest.create(new URI("http://stackoverflow.com/"))
.version(java.net.http.HttpClient.Version.HTTP_2)
.followRedirects(HttpClient.Redirect.ALWAYS)
.GET()
.multiResponseAsync(HttpResponse.multiFile(Paths.get("E:\\foo")));
Map<URI,Path> results = cf.join();
System.out.println("after join");
Si elle est pertinente, c'est la version que je utilise (dernière version de JDK 9):
java version "9-ea"
Java(TM) SE Runtime Environment (build 9-ea+126)
Java HotSpot(TM) Server VM (build 9-ea+126, mixed mode)
fait Tu as déjà résolu ça? – Jay
@Jay: jusqu'à présent, je n'ai pas. – user140547
Salut. Je fais face à quelque chose d'étrange. Le module java.httpclient n'existe pas du tout dans le dernier JDK 9 (build 9-ea + 159) –