网站首页 > 精选教程 正文
目标
取代繁琐的HttpURLConnection的请求。
HTTP Client的优势
API必须是易于使用的,包括简单的阻塞模式
必须支持通知机制如HTTP消息头收到、错误码、HTTP消息体收到
简洁的API能够支持80-90%的需求 必须支持标准和通用身份验证机制
必须能够轻松使用WebSocket
必须支持HTTP 2 必须执行与现有网络API一致的安全检查
必须对lambda表达式等新语言功能很友好
应该对嵌入式系统友好,避免永久运行的后台线程
必须支持HTTPS / TLS 满足HTTP 1.1和HTTP 2的性能要求
使用
需求:使用Http Client请求如下网址内容:
http://api.k780.com:88/?
app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json
来看一下 HTTP Client 的用法:
// 同步
// 1.创建HttpClient对象。
var client = HttpClient.newHttpClient();
// 2.创建请求对象:request,封装请求地址和请求方式get.
var request = HttpRequest.newBuilder().uri(URI.create("http://api.k780.com:88/?
app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json"))
.GET().build();
// 3.使用HttpClient对象发起request请求。得到请求响应对象response
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// 4.得到响应的状态码信息
System.out.println(response.statusCode());
// 5.得到响应的数据信息输出
System.out.println(response.body());
// 异步
// 1.创建HttpClient对象。
var client = HttpClient.newHttpClient();
// 2.创建请求对象:request,封装请求地址和请求方式get.
var request = HttpRequest.newBuilder().uri(URI.create("http://api.k780.com:88/?
app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json"))
.GET().build();
// 3.使用HttpClient对象发起request异步请求。得到请求响应对象future
CompletableFuture<HttpResponse<String>> future =
client.sendAsync(request, HttpResponse.BodyHandlers.ofString());
// 4.监听future对象的响应结果,并通过join方法进行异步阻塞式等待。
future.whenComplete((resp ,ex) -> {
if(ex != null ){
ex.printStackTrace();
} else{
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}).join();
// future.thenApply(t -> t.body()).thenAccept(System.out::println)
- 上一篇: 拒绝接口裸奔!开放API接口签名验证
- 下一篇: Java类加载及对象创建过程详解 java中类的加载
猜你喜欢
- 2024-11-05 关于 URL,说几个你不知道的点 url各部分含义
- 2024-11-05 避免自己写的 url 被diss!建议看看这篇RESTful API简明教程!
- 2024-11-05 IntelliJ IDEA 15款 神级超级牛逼插件推荐
- 2024-11-05 学习SpringMVC——如何获取请求参数
- 2024-11-05 java验证码生成(一) java生成验证码并验证
- 2024-11-05 Nice,终于有人把SpringMVC讲明白了,太简单了...
- 2024-11-05 Java代理IP设置指南:让你的网络请求更灵活
- 2024-11-05 请说说RPC的一个请求的流程是怎么样的?
- 2024-11-05 Javaweb 演示session的URL重写 java sessionid
- 2024-11-05 springboot2.2.X手册:构建全局唯一的短链接数据中心
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)