1 import java.io.InputStream;
2 import java.io.IOException;
3 import java.io.OutputStream;
4 import java.io.PrintWriter;
5 import java.net.Socket;
6 import java.util.Scanner;
7
8 /**
9 This program demonstrates how to use a socket to communicate
10 with a web server. Supply the name of the host and the
11 resource on the command-line, for example
12 java WebGet horstmann.com index.html
13 */
14 public class WebGet
15 {
16 public static void main(String[] args) throws IOException
17 {
18 // Get command-line arguments
19
20 String host;
21 String resource;
22
23 if (args.length == 2)
24 {
25 host = args[0];
26 resource = args[1];
27 }
28 else
29 {
30 System.out.println("Getting / from horstmann.com");
31 host = "horstmann.com";
32 resource = "/";
33 }
34
35 // Open socket
36
37 final int HTTP_PORT = 80;
38 Socket s = new Socket(host, HTTP_PORT);
39
40 // Get streams
41
42 InputStream instream = s.getInputStream();
43 OutputStream outstream = s.getOutputStream();
44
45 // Turn streams into scanners and writers
46
47 Scanner in = new Scanner(instream);
48 PrintWriter out = new PrintWriter(outstream);
49
50 // Send command
51
52 String command = "GET " + resource + " HTTP/1.1\n"
53 + "Host: " + host + "\n\n";
54 out.print(command);
55 out.flush();
56
57 // Read server response
58
59 while (in.hasNextLine())
60 {
61 String input = in.nextLine();
62 System.out.println(input);
63 }
64
65 // Always close the socket at the end
66
67 s.close();
68 }
69 }