这是 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客户端相关推荐

  1. java 飞行记录器_Java 11功能– Java飞行记录器

    java 飞行记录器 在本文中,我们将看到如何利用Java Flight Recorder功能作为Java 11的一部分.之前,它是商业功能之一. 但是,对于带有JEP 328的 Java 11,它是 ...

  2. 码出高效:java开发手册_Java 11手册:最聪明的技巧来简化Java 11导航

    码出高效:java开发手册 Java 11:提示和技巧,日常陷阱及更多 为了庆祝Java 11的发布,我们邀请了八位Java专家与他们分享最新版本的最佳和最差体验. 由于本系列旨在作为Java 11的 ...

  3. 码出高效:java开发手册_Java 11手册:Java专家分享他们在Java 11方面的最佳和最差的经验

    码出高效:java开发手册 Java 10标志着Java生态系统新时代的开始,但最新版本证明仍有一些里程碑可言. Java 11是Oracle新的六个月周期中的第一个LTS版本. 您可以在此处下载Ja ...

  4. java求期望_Java 11的期望

    java求期望 过去的几年对Java世界一直是动荡不安的,在相当多的发行版中添加了各种各样的功能. 在开发人员社区中,人们逐渐意识到Java的开发速度不够快. 在最初的20年中,Java平台和Java ...

  5. java 虚拟机规范_Java虚拟机规范----Java虚拟机结构

    Java体系和一些基本概念 Java平台的结构图: JVM与JRE.JDK关系? JVM:Java Virtual Machine(Java虚拟机),负责执行符合规范的Class文件 JRE: Jav ...

  6. java socket程序_java 简单的java socket程序

    //服务器端:ServerDemo.java import java.io.DataInputStream; import java.io.DataOutputStream; import java. ...

  7. 描述java源程序构成_Java第二章Java程序设计

    <Java第二章Java程序设计>由会员分享,可在线阅读,更多相关<Java第二章Java程序设计(140页珍藏版)>请在人人文库网上搜索. 1.第2章 Java基本语法,2. ...

  8. java 日期 解析_Java日期解析(Java DATE Parsing)

    Java日期解析(Java DATE Parsing) 我有一个java.util.Date的愚蠢问题. 我有这一行代码,但我不明白为什么这个日期是用这种格式无法解析的. public class T ...

  9. java jdk 序列化_JDK 11:Java序列化的终结开始了吗?

    java jdk 序列化 在博客文章" 将Google的协议缓冲区与Java结合使用 "中,我引用了乔什·布洛赫(Josh Bloch)的第三版的有效Java ,他写道:" ...

最新文章

  1. 银行业务常用基本概念
  2. python中列表的运用_python中列表的应用
  3. iphone,pad等真机不被xcode识别,解决方法
  4. 可扩展多线程异步Socket服务器框架EMTASS 2.0
  5. spring与struts2 mvc共存web.xml简单配置
  6. DJ-ZBS2漏电继电器
  7. CAD中PDF转DWG
  8. opencv中cvtcolor()函数
  9. Android Studio设置签名密钥
  10. 荐《别做正常的傻瓜》
  11. 关于robots协议
  12. annotate 函数的用法
  13. IT领域的罗马帝国——微软公司
  14. 2021-06-10 MYSQL存储过程与触发器作业
  15. Python动态画图小代码(Turtle Graphics)
  16. 大数据告诉你:学历真的能改变命运
  17. 格式工厂视频压缩转码选择
  18. 用javaweb连接数据库用javabean、severlet实现增删改查
  19. datax-通用文档
  20. [原创] 盟军敢死队2 - 3D室内场景浏览器

热门文章

  1. django模板中使用JQ代码实现瀑布流显示效果
  2. 两张超级大表join优化
  3. windows下配置ssh(FreeSSHD + putty)
  4. MS Reporting Services 报表开发
  5. hdu 4768 Flyer 二分
  6. 解决安装python第三方模块 '-mno-cygwin'报错的问题
  7. 安装VS2010 无法打开数据文件'C:\Users\Administrator\AppData\Local\Temp\SIT12124.tmp\deffactory.dat的解决方法...
  8. LeetCode 中等难度 92. 反转链表 II解题思路
  9. 常用对照表之TCP及UDP常见端口参照
  10. html太极图代码静态_如何做URL静态化?和页面的静态化