我正在尝试使用 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)