// A program from Chapter 21 of Sams Teach Yourself Java in 24 Hours // by Rogers Cadenhead, http://www.java24hours.com/ package com.java24hours; import java.io.*; import java.net.*; import java.util.*; import java.net.http.*; public class ServerCheck3 { public ServerCheck3() { String[] sites = { "https://www.apple.com/", "https://www.microsoft.com/", "https://www8.hp.com/", "https://www.oracle.com/", "https://www.informit.com/", "https://www.dell.com/", "https://www.lenovo.com", "https://www.intel.com/", "https://www.logitech.com/", "https://www.java.com/" }; try { load(sites); } catch (URISyntaxException oops) { System.out.println("Bad URI: " + oops.getMessage()); } catch (IOException | InterruptedException oops) { System.out.println("Error: " + oops.getMessage()); } } public final void load(String[] sites) throws URISyntaxException, IOException, InterruptedException { for (String site : sites) { System.out.println("\nSite: " + site); // create the web client HttpClient browser = HttpClient.newHttpClient(); // build a request for a website URI uri = new URI(site); HttpRequest.Builder bob = HttpRequest.newBuilder(uri); HttpRequest request = bob.build(); // execute the request HttpResponse response = browser.send(request, HttpResponse.BodyHandlers.ofString()); String[] header = { "Server", "Content-Type", "Content-Encoding" }; for (int i = 0; i < header.length; i++) { // look for a server header HttpHeaders headers = response.headers(); Optional hdr = headers.firstValue(header[i]); if (hdr.isPresent()) { System.out.println(header[i] + ": " + hdr.get()); } else { System.out.println(header[i] + " not identified"); } } } } public static void main(String[] arguments) { new ServerCheck3(); } }