Я пытаюсь поэкспериментировать с Java 9 HttpClient
.
Основной пример, как в HttpRequest javadoc работает без проблем:
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);
Однако при попытке использовать sendAsyncMulti
он не работает. В E:\foo
файлы не создаются, println
после join
не достигается, также нет исключения, хотя я в основном скопировал пример из HttpResponse.multiFile
Javadoc. Я ожидал, что некоторые HTTP-ответы будут сохранены в этом каталоге. Я также попытался удалить HTTP2 и followRedirects, другие URL-адреса, такие как google и т.д., Но ничего не изменило. Что я делаю неправильно?
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");
Если это актуально, это версия, которую я использую (последняя версия 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)