12

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:\fooprintlnアフターjoinに達せず、例外もありませんが、基本的にはHttpResponse.multiFileの Javadocから例をコピーしました。一部の HTTP 応答がそのディレクトリに保存されることを期待していました。また、HTTP2 と followRedirects、Google などの他の URL を削除しようとしましたが、何も変わりませんでした。私は何を間違っていますか?

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)
4

1 に答える 1