Java10基于Java API编写HTTP2客户端详解

本文详细介绍了如何在Java 10环境中,利用jdk.incubator.httpclient模块构建HTTP2客户端。内容涵盖HttpClient、HttpRequest、HttpResponse等关键API的使用,并指导在Eclipse Photon中创建Java模块项目,添加模块依赖。同时,讨论了HTTP GET和POST请求的发送,以及同步和异步请求的实现。

首先,基于Java API的HTTP2客户端,至少要使用Java 9,主要是基于其中的jdk.incubator.httpclient模块。Java 10中的相关部分没有变化。Java 11中已经正式发布到java.net.http模块。

jdk.incubator.httpclient模块主要提供了如下API:

  • HttpClient类
  • HttpRequest类
  • HttpResponse类
  • WebSocket接口

这里我们重点关注HTTP相关的类的用法。

其次,要使用Java 10,需要下载2018年发布的Eclipse IDE Photon版本。当然,如果使用Java 9只要2017年发布的Eclipse IDE Oxygen版本。

1. 创建Java项目

注意其中勾选“Create module-info.java file”。由于从Java 9开始,JDK采用模块化链接运行,所以任何项目都以Java模块的方式出现。

点击“Finish”即提示输入“模块名”,默认为项目名。

创建完成后的Java项目(事实上就是一个Java模块),在src的根目录下就有module-info.java文件。打开该文件,添加对jdk.incubator.httpclient模块的依赖,编辑如下:

module com.mycompany.mymodule.http2 {
	requires jdk.incubator.httpclient;
}

2. 创建HTTP2的客户端类

这里的操作跟传统用法一样。

2.1 使用默认参数创建HttpClient对象

//Create a HttpClient with default settings.
HttpClient client = HttpClient.newHttpClient();

 

2.2 使用HttpClient.newBuilder()创建定制的HttpClient对象

 

HttpClient client = HttpClient
        .newBuilder()
        .version(HttpClient.Version.HTTP_2)
        .priority(0)
        .sslContext(SSLContext.getInstance("TLSv1.2"))
        .build();

 

2.3 HTTP GET请求

 

HttpRequest httpRequest = HttpRequest
	.newBuilder()
	.uri(new URI("https://www.mydomain.com/"))
	.headers("myKey1", "myValue1", "myKey2", "myValue2")
	.GET()
	.build();

 

2.4 HTTP POST请求

HttpRequest httpRequest = HttpRequest
	.newBuilder()
	.uri(new URI("https://www.mydomain.com/"))
	.headers("myKey", "myValue")
	.POST(BodyPublisher.fromString("Hello world"))
	.build();

 

2.5 发送同步请求

HttpResponse <String> httpResponse = client.send(httpRequest, HttpResponse.BodyHandler.asString());

 

2.6 发送异步请求

 

CompletableFuture<HttpResponse<String>> httpResponse = client.sendAsync(httpRequest, HttpResponse.BodyHandler.asString());

 

参考链接:

https://www.eclipse.org/downloads/packages/all

https://docs.oracle.com/javase/10/docs/api/jdk/incubator/http/package-summary.html

https://docs.oracle.com/javase/10/docs/specs/security/standard-names.html#sslcontext-algorithms

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值