java http apache_Apache或其他一些CLIENT JAVA实现是否支持HTTP / 2?

Jetty提供了两个HTTP / 2 Java客户端API.两者都需要Java 8和强制使用ALPN,如

here所述.

低级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 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提供了一种使用different transports的方法,其中一个是HTTP/2 transport.应用程序将使用更高级别的HTTP API,但Jetty下面将使用HTTP / 2来传输HTTP语义.

通过这种方式,应用程序可以透明地使用HttpClient提供的高级API,并分析在配置或启动代码中使用的传输.

// 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/");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值