メモ置き場

java.net.http.HttpClientメモ

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.List;
import java.util.Map;

public class HttpClientSample {
    public static void main(String[] args) {
        HttpClient client = HttpClient.newBuilder()
                .version(HttpClient.Version.HTTP_2)
                .followRedirects(HttpClient.Redirect.NEVER)
                .connectTimeout(Duration.ofMillis(5000))
                .build();

        // GETの場合
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("http://localhost:8000/"))
                .header("Last-Modified", "Sat, 26 Feb 2022 00:00:00 GMT")
                .timeout(Duration.ofMillis(5000))
                .GET()
                .build();

//        // POSTの場合
//        HttpRequest request = HttpRequest.newBuilder()
//                .uri(URI.create("http://localhost:8000/"))
//                .header("Content-Type", "application/json")
//                .timeout(Duration.ofMillis(5000))
//                .POST(HttpRequest.BodyPublishers.ofString("{}"))
//                .build();

        try {
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println(response.statusCode());
            for (Map.Entry<String, List<String>> header : response.headers().map().entrySet()) {
                for (String v : header.getValue()) {
                    System.out.printf("%s: %s\n", header.getKey(), v);
                }
            }
            System.out.println(response.body());
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

参考