展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

Jdk11新增Http客户端提交post请求和异步请求

  • 发送post请求,json格式
public class Main {
    
    public static void main(String[] args) throws Exception {
        testPost();
    }
    
    private static final String targetUrl1 = "http://api.xdclass.net/pub/api/v1/web/web_login";
    private static final URI uri1 = URI.create(targetUrl1);
    
    private static final void testPost() {
        //设置建立连接的超时 connect timeout
        var httpClient = HttpClient.newBuilder().connectTimeout(Duration.ofMillis(5000)).build();
        var request = HttpRequest.newBuilder().uri(uri1)
                //json格式则下面数据
                .header("Content-Type","application/json")
                .POST(HttpRequest.BodyPublishers.ofString("{\"phone\":\"13113777338\",\"pwd\":\"1234567890\"}"));
        try {
            var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println(response.body());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
  • 发送post请求,form表单提交
public class Main {
    
    public static void main(String[] args) throws Exception {
        testPost();
    }
    
    private static final String targetUrl1 = "http://api.xdclass.net/pub/api/v1/web/web_login";
    private static final URI uri1 = URI.create(targetUrl1);
    
    private static final void testPost() {
        //设置建立连接的超时 connect timeout
        var httpClient = HttpClient.newBuilder().connectTimeout(Duration.ofMillis(5000)).build();
        var request = HttpRequest.newBuilder().uri(uri1)
                //form表单则使用下面的配置
                .header("Content-Type","application/x-www-form-urlencoded")
                .POST(HttpRequest.BodyPublishers.ofString("phone=13113777338&pwd=1234567890")).build();
        try {
            var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println(response.body());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
  • 发送异步get请求,写法1
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;

public class Main {

    public static void main(String[] args) throws Exception {
        testAsyncGet();
    }
    
    private static final String targetUrl = "http://api.xdclass.net/pub/api/v1/web/all_category";
    private static final URI uri = URI.create(targetUrl);

    private static final void testAsyncGet() {
        var httpClient = HttpClient.newBuilder().build();
        var request = HttpRequest.newBuilder().timeout(Duration.ofMillis(3000))
                .header("key1", "v1")
                .header("key2", "v2")
                .uri(uri).build();
        try {
            // 使用var
            var response = httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString())
                    .thenApply(HttpResponse::body);
            System.out.println(response.get());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
  • 发送异步get请求,写法2
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;

public class Main {

    public static void main(String[] args) throws Exception {
        testAsyncGet();
    }
    
    private static final String targetUrl = "http://api.xdclass.net/pub/api/v1/web/all_category";
    private static final URI uri = URI.create(targetUrl);

    private static final void testAsyncGet() {
        var httpClient = HttpClient.newBuilder().build();
        var request = HttpRequest.newBuilder().timeout(Duration.ofMillis(3000))
                .header("key1", "v1")
                .header("key2", "v2")
                .uri(uri).build();
        try {
            // 使用CompletableFuture 
            CompletableFuture response = httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString())
                    .thenApply(HttpResponse::body);
            System.out.println(response.get());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
posted @ 2022-08-26 07:54  DogLeftover  阅读(170)  评论(0编辑  收藏  举报