Próbuję eksperymentować z Javy 9 HttpClient
.Java 9 HttpClient z sendAsyncMulti/multiResponseAsync
Podstawowym przykładem jak w HttpRequest's javadoc działa bez problemów:
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);
Jednak gdy próbuje użyć sendAsyncMulti
, to nie działa. Żadne pliki nie są tworzone w E:\foo
, println
po join
nie jest osiągnięty, nie ma również wyjątku, chociaż zasadniczo skopiowałem przykład z HttpResponse.multiFile
's Javadoc. Spodziewałem się, że niektóre odpowiedzi HTTP zostaną zapisane w tym katalogu. Próbowałem również usunąć HTTP2 i followRedirects, inne adresy URL, takie jak Google itp., Ale nic to nie zmieniło. Co ja robię źle?
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");
Jeśli jest to istotne, jest to wersja używam (najnowsza wersja 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)
zrobił kiedykolwiek to rozwiązałeś? – Jay
@Jay: do tej pory nie. – user140547
Witam. Stoję w obliczu dziwnej rzeczy. Moduł java.httpclient w ogóle nie istnieje w najnowszym JDK 9 (kompilacja 9-ea + 159) –