jdk11 HttpClient 用法
前几天研究了Java的异步处理CompletableFuture,它是在1.8中新加的,jdk11中的HttpClient刚好也用到了,顺便说一下怎么使用,以前可能会用第三方的http处理库,现在Java11已经自带了,而且用起来也很方便。
java.net.http.HttpClient
这个类主要是用来发送http请求的,是一个抽象类,通过builder来创建实例。
HttpClient client = HttpClient.newBuilder()
.version(Version.HTTP_1_1)
.followRedirects(Redirect.NORMAL)
.connectTimeout(Duration.ofSeconds(6))
.build();
builder几个常用的设置:
- connectTimeout() 连接超时时间
- cookieHandler() Cookie处理器
- executor() 用于执行异步请求的执行程序
- followRedirects() 重定向策略
- proxy() 代理设置
- version() http版本,支持http2
两个发送请求的方法:
-
同步请求
request:发送的请求
responseBodyHandler:响应结果处理器
HttpResponse:http响应
public abstract <T> HttpResponse<T> send(HttpRequest request, HttpResponse.BodyHandler<T> responseBodyHandler) throws IOException, InterruptedException
-
异步请求
request:发送的请求
responseBodyHandler:响应结果处理器
CompletableFuture<HttpResponse>:异步响应结果
public abstract <T> CompletableFuture<HttpResponse<T>> sendAsync(HttpRequest request, HttpR