Ich versuche, mit Java 9 HttpClient
zu experimentieren.Java 9 HttpClient mit sendAsyncMulti/multiResponseAsync
Das grundlegende Beispiel wie in HttpRequest's javadoc Arbeiten ohne Probleme:
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);
jedoch bei dem Versuch, sendAsyncMulti
zu verwenden, funktioniert es nicht. Es werden keine Dateien in E:\foo
erstellt, die println
werden nach join
nicht erreicht, es gibt auch keine Ausnahme, obwohl ich das Beispiel grundsätzlich von HttpResponse.multiFile
's Javadoc kopiert habe. Ich habe erwartet, dass einige HTTP-Antworten in diesem Verzeichnis gespeichert werden. Ich habe auch versucht, die HTTP2 und folgenRedirects, andere URLs wie Google usw. zu entfernen, aber es hat nichts geändert. Was mache ich falsch?
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");
Wenn es relevant ist, ist dies die Version ich verwende (neueste Version von 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)
genommen haben hast du das jemals gelöst? – Jay
@Jay: Bisher habe ich nicht. – user140547
Hallo. Ich habe etwas Seltsames vor mir. Das Modul java.httpclient existiert im letzten JDK 9 überhaupt nicht (Build 9-ea + 159) –