import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; /** The JEP 517 opt-in, client-wide or per request. Prints the version every response really used. */ public class OptIn { public static void main(String[] args) throws Exception { URI uri = URI.create(args[0]); String where = args.length > 1 ? args[1] : "client"; // "client" or "request" var builder = Tls.builder(); if (where.equals("client")) builder.version(HttpClient.Version.HTTP_3); var client = builder.build(); var req = HttpRequest.newBuilder(uri); if (where.equals("request")) req.version(HttpClient.Version.HTTP_3); for (int i = 1; i <= 4; i++) { var r = client.send(req.build(), HttpResponse.BodyHandlers.ofString()); System.out.println(where + "-level HTTP_3, request " + i + ": " + r.version()); } client.close(); } }