JDK 11新特性
Http客户端
常用类和接口
- HttpClient.Builder
- HttpClient 构建工具类
 
- HttpRequest.Builder
- HttpRequest 构建工具类
 
- HttpRequest.BodyPublisher
- 将java 对象转换为可发送的HTTP request body字节流,如form表单提交
 
- HttpResponse.BodyHandler
- 处理接收到的Response Body
 

 
package com.ybchen.jdk11; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; /** * @Description: * @Author:chenyanbin * @Date:2020/12/24 9:17 下午 * @Versiion:1.0 */ public class HttpDemo { public static void main(String[] args) { try { testGet(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } private static final String targetUrl="https://www.cnblogs.com/chenyanbin/ajax/news.aspx"; private static final URI uri=URI.create(targetUrl); private static final void testGet() throws IOException, InterruptedException { HttpClient httpClient = HttpClient.newBuilder().connectTimeout(Duration.ofMillis(5000)).build(); HttpRequest httpRequest = HttpRequest.newBuilder().timeout(Duration.ofMillis(3000)) .header("key1", "value2") .GET() .uri(uri) .build(); HttpResponse<String> send = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString()); System.out.println(send.body()); } }

 
package com.ybchen.jdk11; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; /** * @Description: * @Author:chenyanbin * @Date:2020/12/24 9:32 下午 * @Versiion:1.0 */ public class HttpDemo2 { public static void main(String[] args) { String json = "{\n" + " \"name\":\"alex\",\n" + " \"phone\":\"2020\",\n" + " \"pwd\":\"jqk\"\n" + "}"; testPost(json); } private static final String targetUrl = "http://127.0.0.1:8081/api/v1/pri/user/registerx"; private static final URI uri = URI.create(targetUrl); private static void testPost(String json) { HttpClient httpClient = HttpClient.newBuilder().connectTimeout(Duration.ofMillis(5000)).build(); HttpRequest httpRequest = HttpRequest.newBuilder().timeout(Duration.ofMillis(3000)) .header("key1", "value2") .uri(uri) //json格式的时候,传入如下 .header("Content-Type", "application/json") //form表单时,使用 // .header("Content-Type","application/x-www-form-urlencoded") // .POST(HttpRequest.BodyPublishers.ofString("name=123&pwd=456")) .POST(HttpRequest.BodyPublishers.ofString(json)) .build(); try { HttpResponse<String> send = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString()); System.out.println(send.body()); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }
 
package com.ybchen.jdk11; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; /** * @Description: * @Author:chenyanbin * @Date:2020/12/24 9:17 下午 * @Versiion:1.0 */ public class HttpDemo { public static void main(String[] args) throws InterruptedException, ExecutionException, IOException { testAsynGet(); } private static final String targetUrl="https://www.cnblogs.com/chenyanbin/ajax/news.aspx"; private static final URI uri=URI.create(targetUrl); private static final void testAsynGet() throws IOException, InterruptedException, ExecutionException { HttpClient httpClient = HttpClient.newBuilder().connectTimeout(Duration.ofMillis(5000)).build(); HttpRequest httpRequest = HttpRequest.newBuilder().timeout(Duration.ofMillis(3000)) .header("key1", "value2") .GET() .uri(uri) .build(); CompletableFuture<String> stringCompletableFuture = httpClient .sendAsync(httpRequest, HttpResponse.BodyHandlers.ofString()) .thenApply(HttpResponse::body); System.out.println(stringCompletableFuture.get()); } }

 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号