This Java tip shows how to read a web server response using Streams in Java.

Java Code:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class GetWebPage {
  public static void main(String args[]) throws IOException,
      UnknownHostException {
    String resource, host, file;
    int slashPos;

    resource = "http://www.java-tips.org".substring(7); // skip HTTP://
    slashPos = resource.indexOf('/'); 
    if (slashPos < 0) {
      resource = resource + "/";
      slashPos = resource.indexOf('/');
    }
    file = resource.substring(slashPos); // isolate host and file parts
    host = resource.substring(0, slashPos);
    System.out.println("Host to contact: '" + host + "'");
    System.out.println("File to fetch : '" + file + "'");
    MyHTTPConnection webConnection = new MyHTTPConnection(host);
    if (webConnection != null) {
      BufferedReader in = webConnection.get(file);
      String line;
      while ((line = in.readLine()) != null) { // read until EOF
        System.out.println(line);
      }
    }
    System.out.println("\nDone.");
  }

  static class MyHTTPConnection {
    public final static int HTTP_PORT = 80;

    InetAddress wwwHost;

    DataInputStream dataInputStream;

    PrintStream outputStream;

    public MyHTTPConnection(String host) throws UnknownHostException {
      wwwHost = InetAddress.getByName(host);
      System.out.println("WWW host = " + wwwHost);
    }

    public BufferedReader get(String file) throws IOException {
      Socket httpPipe;
      InputStream in;
      OutputStream out;
      BufferedReader bufReader;
      PrintWriter printWinter;
      httpPipe = new Socket(wwwHost, HTTP_PORT);
      if (httpPipe == null) {
        return null;
      }
      // get raw streams
      in = httpPipe.getInputStream();
      out = httpPipe.getOutputStream();
      // turn into useful ones
      bufReader = new BufferedReader(new InputStreamReader(in));
      printWinter = new PrintWriter(new OutputStreamWriter(out), true);
      if (in == null || out == null || bufReader == null || printWinter == null) {
        System.out.println("Failed to open streams to socket.");
        return null;
      }
      // send GET request
      System.out.println("GET " + file + " HTTP/1.0\n");
      printWinter.println("GET " + file + " HTTP/1.0\n");
      // read response until blank separator line
      String response;
      while ((response = bufReader.readLine()).length() > 0) {
        System.out.println(response);
      }
      return bufReader; 
    }
  }
}