JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

java 11 新特性 标准HTTP网络请求 HTTP Client使用

wys521 2024-11-05 12:50:08 精选教程 34 ℃ 0 评论

目标

取代繁琐的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)



本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表