send http response

This commit is contained in:
andrzej 2024-11-10 18:52:15 +01:00
parent 2ecb728d87
commit c764c45807
1 changed files with 31 additions and 1 deletions

View File

@ -1,8 +1,11 @@
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket; import java.net.ServerSocket;
import java.net.Socket; import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class Main { public class Main {
@ -10,6 +13,7 @@ public class Main {
try (ServerSocket serverSocket = new ServerSocket(8080)) { try (ServerSocket serverSocket = new ServerSocket(8080)) {
System.out.println("listening on socket 8080..."); System.out.println("listening on socket 8080...");
while (true) { while (true) {
// .accept() blocks until we have a client
try (Socket client = serverSocket.accept()) { try (Socket client = serverSocket.accept()) {
handleClient(client); handleClient(client);
} }
@ -28,8 +32,34 @@ public class Main {
requestBuilder.append(line + "\r\n"); requestBuilder.append(line + "\r\n");
} }
String request = requestBuilder.toString(); String request = requestBuilder.toString();
System.out.println(request); // System.out.println(request);
String[] requestLines = request.split("\r\n");
String[] requestLine = requestLines[0].split(" ");
String method = requestLine[0];
String path = requestLine[1];
String version = requestLine[2];
String host = requestLines[1].split(" ")[1];
List<String> headers = new ArrayList<>();
// we start the loop from 2 because 0 is GET / HTTP/1.1 and 1 is the host
for (int h = 2; h < requestLines.length; h++) {
String header = requestLines[h];
headers.add(header);
}
String accessLog = String.format("Client %s, method %s, path %s, version %s, host %s, headers %s",
client.toString(),
method, path, version, host, headers.toString());
System.out.println(accessLog);
OutputStream clientOutput = client.getOutputStream();
clientOutput.write("HTTP/1.1 200 OK\r\n".getBytes());
clientOutput.write("ContentType: text/html\r\n".getBytes());
clientOutput.write("\r\n".getBytes());
clientOutput.write("<b>Hurray!!!1!</b>".getBytes());
clientOutput.write("\r\n\r\n".getBytes());
clientOutput.flush();
client.close();
} }
} }