• 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<String> 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<String> responseBodyHandler = BodyHandlers.ofString();
    		CompletableFuture<HttpResponse<String>> sendAsync = client.sendAsync(request, responseBodyHandler);
    		sendAsync.thenApply(t -> t.body()).thenAccept(System.out::println);
    		//HttpResponse<String> 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<String> responseBodyHandler = BodyHandlers.ofString();
    		HttpResponse<String> response = client.send(request, responseBodyHandler);
    		String body = response.body();
    		System.out.println(body);
    	}
    }
    
    
  • 相关阅读:
    [苹果maccms] MACCMS苹果cms宝塔定时任务添加教程说明
    [苹果cmsV10]新版本演员库分类报无权限问题和解决方法!
    CentOS 6.8安装Python2.7.13
    [HOWTO] Install Sphinx for A Script Pro
    A Script Pro nginx URL重写规则无法播放MP4解决方法
    随机跳转
    UI库
    vuex
    vue 数据请求
    vue守卫、储存与路由模式
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/10351130.html
Copyright © 2020-2023  润新知