import com.sun.net.httpserver.HttpServer;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;

public class ClientLocale {
    public static void main(String[] args) throws IOException, InterruptedException {
        HttpServer server = HttpServer.create(
                new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 0), 0);
        server.createContext("/libri", scambio -> {
            byte[] corpo = "libro=Java".getBytes(StandardCharsets.UTF_8);
            scambio.getResponseHeaders().set("Content-Type", "text/plain; charset=utf-8");
            scambio.sendResponseHeaders(200, corpo.length);
            try (var uscita = scambio.getResponseBody()) {
                uscita.write(corpo);
            }
        });
        server.start();
        try (HttpClient client = HttpClient.newBuilder()
                .connectTimeout(Duration.ofSeconds(2)).build()) {
            URI uri = URI.create("http://127.0.0.1:" + server.getAddress().getPort()
                    + "/libri");
            HttpRequest richiesta = HttpRequest.newBuilder(uri)
                    .timeout(Duration.ofSeconds(3)).GET().build();
            HttpResponse<String> risposta = client.send(richiesta,
                    HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
            System.out.println("HTTP " + risposta.statusCode());
            System.out.println(risposta.body());
        } finally {
            server.stop(0);
        }
    }
}
