import java.io.*;
import java.net.*;
import javax.net.ssl.*;

public class WGet_simple {
    public static Socket clientSocket = null;
    public static String targethost, targetfile;
    public static int    targetport;
    public static String request ,req1,req2, res;
    public static String nl ="\r\n";
    
    public static void main(String[] args) {
        if (args.length < 3) {
            System.out.println("Aufruf: java WGet_simple www.host.de port /file");
            System.exit(-1);
        }
        targethost = args[0];                   // host
        targetport = Integer.parseInt(args[1]); // port
        targetfile = args[2];                   // path+file
        
        try {          
            // TCP-Socket (unverschlüsselt)
            clientSocket = new Socket( targethost, targetport );
            // alternativ TLS-Socket (verschlüsselt)
            //SSLSocketFactory sslFact = (SSLSocketFactory) SSLSocketFactory.getDefault();
            //clientSocket = (SSLSocket) sslFact.createSocket( targethost, targetport );

            // Bietet formatierte Textausgabe u.a. println()
            PrintWriter clientOut = new PrintWriter(new
                    BufferedOutputStream( clientSocket.getOutputStream()) );
            BufferedReader clientIn = new BufferedReader(new
                    InputStreamReader( clientSocket.getInputStream() ));

            req1 = "GET " + targetfile + " HTTP/1.1";
            req2 = "Host: " + targethost;  // + ":80"  

            request = req1 + nl + req2 + nl;
            
            System.out.println("HTTP-Request-Header:\n-------------------");
            System.out.println(request + System.lineSeparator() );
            // Sende Request + Leerzeile über TCP-Stream
            clientOut.print( request + nl);
            clientOut.flush();
            
            System.out.println("HTTP-Response-Header:\n-------------------");
            while ( !(res = clientIn.readLine()).equals("")  ) {
                System.out.println( res );
            }

            System.out.println("\nHTTP-Daten:\n----------------");

            while ((res = clientIn.readLine()) != null) {
               System.out.println(res);
             }
            System.out.println("\n----------------------\nVerbindung vom Server beendet");
            clientSocket.close();
        }
      catch (IOException ex){ System.out.println(ex);}
    }
}
	
