美文网首页
Java 11 新特性HttpClient

Java 11 新特性HttpClient

作者: redexpress | 来源:发表于2018-09-29 11:34 被阅读237次

这里是Java 11 新特性HTTP Client (Standard)的简单演示:

package io.github.redexpress;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpClient.Version;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.nio.file.Paths;
import java.time.Duration;

public class HelloJava11 {
    public static void main(String[] a) throws Exception{
        new HelloJava11().demoHttp();
    }
    
    public void demoHttp() throws Exception{
        httpSync();
        httpAsync();
        postFile();
        postMultipart();
    }
    
    public void postFile() throws FileNotFoundException {
        HttpRequest request = HttpRequest.newBuilder()
                .version(Version.HTTP_1_1)
                .uri(URI.create("http://httpbin.org/post"))
                .timeout(Duration.ofMinutes(2))
                .header("Content-Type", "octet-stream")
                .POST(BodyPublishers.ofFile(Paths.get("HelloJava11.java")))
                .build();
        HttpClient client = HttpClient.newBuilder().build();
        client.sendAsync(request, BodyHandlers.ofString())
                .thenApply(HttpResponse::body)
                .thenAccept(System.out::println)
                .join();
    }
    
    public void postMultipart() throws FileNotFoundException {
        String boundary = "B-0-u-n-d-a-r-y";
        String data = "Hello Yang!";
        HttpRequest request = HttpRequest.newBuilder()
                .version(Version.HTTP_1_1)
                .uri(URI.create("http://httpbin.org/post"))
                .timeout(Duration.ofMinutes(2))
                .header("Content-Type", "multipart/form-data, boundary=" + boundary)
                .POST(BodyPublishers.ofString("--" + boundary + "\r\n" 
                        + "content-disposition: form-data; filename=\"text\"\r\n"
                        + "Content-Type: text/plain\r\n" 
                        + "\r\n"
                        + data + "\r\n" 
                        + "--" + boundary + "--\r\n"))
                .build();
        HttpClient client = HttpClient.newBuilder().build();
        client.sendAsync(request, BodyHandlers.ofString())
                .thenApply(HttpResponse::body)
                .thenAccept(System.out::println)
                .join();
    }
    
    public void httpSync() throws IOException, InterruptedException{
        HttpRequest request = HttpRequest.newBuilder()
                .version(Version.HTTP_1_1)
                .uri(URI.create("http://httpbin.org/get"))
                .GET().build();
        HttpClient client = HttpClient.newBuilder().build();
        HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
    
    public void httpAsync(){
        HttpRequest request = HttpRequest.newBuilder()
                .version(Version.HTTP_1_1)
                .uri(URI.create("http://httpbin.org/get"))
                .GET().build();
        HttpClient client = HttpClient.newBuilder().build();
        client.sendAsync(request, BodyHandlers.ofString())
                .thenApply(response -> {
                    System.out.println(response.statusCode());
                    return response; 
                }).thenApply(HttpResponse::body)
                .thenAccept(System.out::println)
                .join();
    }
}

使用Java 11的Launch Single-File Source-Code Programs
特性运行这段代码:

java HelloJava11.java

相关文章

  • Java 11 新特性HttpClient

    这里是Java 11 新特性HTTP Client (Standard)的简单演示: 使用Java 11的Laun...

  • Java8之后的新特性

    11新特性 var变量编译器自动匹配 httpclient支持http2.0 List增加of 14新特性 模式匹...

  • JDK各个版本之间的内容变化

    Oracle 公布的未来 Java 版本发布和支持周期图 Java 11 新特性 Java 11 new feat...

  • Java11的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

  • Java15的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

  • Java12的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

  • JAVA新版本有哪些新特性

    1. Java 11有哪些新特性? JAVA 11是Java后第一个长期支持的版本 String API - is...

  • Java 11 新特性

    概述 Java 11(JDK 11)是一个长期支持的版本,这是Java 8以来首个长期支持的版本,Java 9 和...

  • Apache和Spring提供的StopWatch执行时间监视器

    相关阅读 【小家java】java5新特性(简述十大新特性) 重要一跃【小家java】java6新特性(简述十大新...

  • Java11新特性

    Java11新特性概述 Java 11已于2018年9月25日正式发布,Java9和Java10被称之为功能性版本...

网友评论

      本文标题:Java 11 新特性HttpClient

      本文链接:https://www.haomeiwen.com/subject/feevoftx.html