Does Apache or any other CLAENT JAVA HTTP / 2 implementation support?

I am looking for a java client that can connect to an HTTP / 2 based server. The server already supports the HTTP / 2 API. I do not see the most popular Apache Http client https://hc.apache.org/ supporting HTTP / 2.

Does Apache already have an implementation for the Java client that supports Http / 2?

If not, is there any java client that supports connecting to HTTP / 2, preferably in Java 7?

+4
source share
3 answers

Jetty API- HTTP/2 Java. Java 8 ALPN, .

API

API HTTP2Client, HTTP/2 HTTP/2 , .

    // Setup and start the HTTP2Client.
    HTTP2Client client = new HTTP2Client();
    SslContextFactory sslContextFactory = new SslContextFactory();
    client.addBean(sslContextFactory);
    client.start();

    // Connect to the remote host to obtains a Session.
    FuturePromise<Session> sessionPromise = new FuturePromise<>();
    client.connect(sslContextFactory, new InetSocketAddress(host, port), new ServerSessionListener.Adapter(), sessionPromise);
    Session session = sessionPromise.get(5, TimeUnit.SECONDS);

    // Use the session to make requests.
    HttpFields requestFields = new HttpFields();
    requestFields.put("User-Agent", client.getClass().getName() + "/" + Jetty.VERSION);
    MetaData.Request metaData = new MetaData.Request("GET", new HttpURI("https://webtide.com/"), HttpVersion.HTTP_2, requestFields);
    HeadersFrame headersFrame = new HeadersFrame(metaData, null, true);
    session.newStream(headersFrame, new Promise.Adapter<>(), new Stream.Listener.Adapter()
    {
        @Override
        public void onHeaders(Stream stream, HeadersFrame frame)
        {
            // Response headers.
            System.err.println(frame);
        }

        @Override
        public void onData(Stream stream, DataFrame frame, Callback callback)
        {
            // Response content.
            System.err.println(frame);
            callback.succeeded();
        }
    });

API

Jetty HttpClient , HTTP/2 . HTTP-API , Jetty HTTP/2 HTTP.

, API- , HttpClient, , .

    // Setup and start HttpClient with HTTP/2 transport.
    HTTP2Client http2Client = new HTTP2Client();
    SslContextFactory sslContextFactory = new SslContextFactory();
    HttpClient httpClient = new HttpClient(new HttpClientTransportOverHTTP2(http2Client), sslContextFactory);
    httpClient.start();

    // Make a request.
    ContentResponse response = httpClient.GET("https://webtide.com/");
+6

Jetty has supported HTTP2 since version 9.3. This includes the server and client .

+1
source

Source: https://habr.com/ru/post/1624543/


All Articles