Java 11+ HttpClient 发送GET/POST请求

60 阅读1分钟

*在Java11的java.net.http.包中,有一个HttpClient类可以完成HTTP请求。

import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
 
public class Java11HttpClientExample {
    private final HttpClient httpClient = HttpClient.newBuilder()
            // 强制使用HTTP/2(若服务端不支持则抛出异常)  
            .version(HttpClient.Version.HTTP_2)  
            // 设置TCP连接超时为15秒  
            .connectTimeout(Duration.ofSeconds(15))  
            // 自动跟随所有重定向  
            .followRedirects(HttpClient.Redirect.ALWAYS)
            .build();
 
    public static void main(String[] args) throws Exception {
        String url ="http://127.0.0.1:8080/algo/affected/calc";  
        Map<String, Object> data = new HashMap<>();  
        data.put("typeEnum", "KILOMETER_GRID");  
        data.put("eventId", "1841");  
        // 发送POST请求  
        MyTest myTest = new MyTest();  
        myTest.sendPost(url, data);
    }
 
    private void sendGet() throws Exception {
        HttpRequest request = HttpRequest.newBuilder()
                .GET()
                .uri(URI.create("你请求数据的url地址"))
                .setHeader("User-Agent", "Java 11 HttpClient Bot")
                .build();
 
        HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
 
    private void sendPost(String url, Map<String, Object> data) throws Exception {  
        String jsonStr = JSONUtil.toJsonStr(data);  
        HttpRequest request = HttpRequest.newBuilder()  
                        .uri(URI.create(url))  
                        .header("Content-Type", "application/json")  
                        .header(HttpHeaders.AUTHORIZATION, "Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImY3YjI5ZTM5LTFjMWEtNGM0My1iNzNiLWM4MmIwNGM5NGVmOSJ9.lMs_1RYAtnHxnQyZ9DktVwL3dkcoZrz6ot8C5RidUvojeXxTBt20tVfc7F17ng6maFVMpiwW0lZ0b-5Zovj_WA")  
                        .POST(HttpRequest.BodyPublishers.ofString(jsonStr))  
                        .build(); 
        HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());  
        System.out.println("statusCode: " + response.statusCode());  
        System.out.println("body: " + response.body());  
    }
}