java http客户端_java 11 标准Java异步HTTP客户端
这是 Java 9 开始引入的一个处理 HTTP 请求的的 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在 java.net 包中找到这个 API。
来看一下 HTTP Client 的用法:
var request = HttpRequest.newBuilder()
.uri(URI.create("https://javastack.cn"))
.GET()
.build();
var client = HttpClient.newHttpClient();
// 同步
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
// 异步
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println);
上面的 .GET() 可以省略,默认请求方式为 Get!
例子:
import static org.junit.Assert.*;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandler;
import java.net.http.HttpResponse.BodyHandlers;
import java.util.concurrent.CompletableFuture;
import org.junit.Test;
public class HTTPClientTest {
@Test
public void testName2() throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create("http://127.0.0.1:8080/test/")).build();
BodyHandler responseBodyHandler = BodyHandlers.ofString();
CompletableFuture> sendAsync = client.sendAsync(request, responseBodyHandler);
sendAsync.thenApply(t -> t.body()).thenAccept(System.out::println);
//HttpResponse response = sendAsync.get();
//String body = response.body();
//System.out.println(body);
}
@Test
public void testName() throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create("http://127.0.0.1:8080/test/")).build();
BodyHandler responseBodyHandler = BodyHandlers.ofString();
HttpResponse response = client.send(request, responseBodyHandler);
String body = response.body();
System.out.println(body);
}
}
java http客户端_java 11 标准Java异步HTTP客户端相关推荐
- java 飞行记录器_Java 11功能– Java飞行记录器
java 飞行记录器 在本文中,我们将看到如何利用Java Flight Recorder功能作为Java 11的一部分.之前,它是商业功能之一. 但是,对于带有JEP 328的 Java 11,它是 ...
- 码出高效:java开发手册_Java 11手册:最聪明的技巧来简化Java 11导航
码出高效:java开发手册 Java 11:提示和技巧,日常陷阱及更多 为了庆祝Java 11的发布,我们邀请了八位Java专家与他们分享最新版本的最佳和最差体验. 由于本系列旨在作为Java 11的 ...
- 码出高效:java开发手册_Java 11手册:Java专家分享他们在Java 11方面的最佳和最差的经验
码出高效:java开发手册 Java 10标志着Java生态系统新时代的开始,但最新版本证明仍有一些里程碑可言. Java 11是Oracle新的六个月周期中的第一个LTS版本. 您可以在此处下载Ja ...
- java求期望_Java 11的期望
java求期望 过去的几年对Java世界一直是动荡不安的,在相当多的发行版中添加了各种各样的功能. 在开发人员社区中,人们逐渐意识到Java的开发速度不够快. 在最初的20年中,Java平台和Java ...
- java 虚拟机规范_Java虚拟机规范----Java虚拟机结构
Java体系和一些基本概念 Java平台的结构图: JVM与JRE.JDK关系? JVM:Java Virtual Machine(Java虚拟机),负责执行符合规范的Class文件 JRE: Jav ...
- java socket程序_java 简单的java socket程序
//服务器端:ServerDemo.java import java.io.DataInputStream; import java.io.DataOutputStream; import java. ...
- 描述java源程序构成_Java第二章Java程序设计
<Java第二章Java程序设计>由会员分享,可在线阅读,更多相关<Java第二章Java程序设计(140页珍藏版)>请在人人文库网上搜索. 1.第2章 Java基本语法,2. ...
- java 日期 解析_Java日期解析(Java DATE Parsing)
Java日期解析(Java DATE Parsing) 我有一个java.util.Date的愚蠢问题. 我有这一行代码,但我不明白为什么这个日期是用这种格式无法解析的. public class T ...
- java jdk 序列化_JDK 11:Java序列化的终结开始了吗?
java jdk 序列化 在博客文章" 将Google的协议缓冲区与Java结合使用 "中,我引用了乔什·布洛赫(Josh Bloch)的第三版的有效Java ,他写道:" ...
最新文章
- 银行业务常用基本概念
- python中列表的运用_python中列表的应用
- iphone,pad等真机不被xcode识别,解决方法
- 可扩展多线程异步Socket服务器框架EMTASS 2.0
- spring与struts2 mvc共存web.xml简单配置
- DJ-ZBS2漏电继电器
- CAD中PDF转DWG
- opencv中cvtcolor()函数
- Android Studio设置签名密钥
- 荐《别做正常的傻瓜》
- 关于robots协议
- annotate 函数的用法
- IT领域的罗马帝国——微软公司
- 2021-06-10 MYSQL存储过程与触发器作业
- Python动态画图小代码(Turtle Graphics)
- 大数据告诉你:学历真的能改变命运
- 格式工厂视频压缩转码选择
- 用javaweb连接数据库用javabean、severlet实现增删改查
- datax-通用文档
- [原创] 盟军敢死队2 - 3D室内场景浏览器
热门文章
- django模板中使用JQ代码实现瀑布流显示效果
- 两张超级大表join优化
- windows下配置ssh(FreeSSHD + putty)
- MS Reporting Services 报表开发
- hdu 4768 Flyer 二分
- 解决安装python第三方模块 '-mno-cygwin'报错的问题
- 安装VS2010 无法打开数据文件'C:\Users\Administrator\AppData\Local\Temp\SIT12124.tmp\deffactory.dat的解决方法...
- LeetCode 中等难度 92. 反转链表 II解题思路
- 常用对照表之TCP及UDP常见端口参照
- html太极图代码静态_如何做URL静态化?和页面的静态化