Advertisement
dev017

server http in java.

Jul 15th, 2023 (edited)
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.50 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.io.OutputStream;
  5. import java.net.ServerSocket;
  6. import java.net.Socket;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. import java.util.logging.Level;
  10. import java.util.logging.Logger;
  11.  
  12. public class HttpServer {
  13.  
  14.     private static final Logger logger = Logger.getLogger(HttpServer.class.getName());
  15.  
  16.     public static void main(String[] args) {
  17.         int port = 8080;
  18.  
  19.         try {
  20.             ServerSocket serverSocket = new ServerSocket(port);
  21.             logger.info("Server started on port " + port);
  22.  
  23.             while (true) {
  24.                 Socket clientSocket = serverSocket.accept();
  25.                 logger.info("Accepted connection from " + clientSocket.getInetAddress());
  26.  
  27.                 Thread requestHandlerThread = new Thread(() -> {
  28.                     try {
  29.                         OutputStream outputStream = clientSocket.getOutputStream();
  30.  
  31.                         String request = getRequest(clientSocket);
  32.                         logger.info("Received request: " + request);
  33.  
  34.                         if (request.startsWith("GET")) {
  35.                             handleGetRequest(outputStream, request);
  36.                         } else if (request.startsWith("POST")) {
  37.                             handlePostRequest(outputStream, request);
  38.                         } else if (request.startsWith("PUT")) {
  39.                             handlePutRequest(outputStream, request);
  40.                         } else if (request.startsWith("DELETE")) {
  41.                             handleDeleteRequest(outputStream, request);
  42.                         } else {
  43.                             handleDefaultResponse(outputStream);
  44.                         }
  45.  
  46.                         clientSocket.close();
  47.                         logger.info("Connection closed");
  48.                     } catch (IOException e) {
  49.                         logger.log(Level.SEVERE, "An error occurred while handling request", e);
  50.                     }
  51.                 });
  52.  
  53.                 requestHandlerThread.start();
  54.             }
  55.         } catch (IOException e) {
  56.             logger.log(Level.SEVERE, "An error occurred while starting the server", e);
  57.         }
  58.     }
  59.  
  60.     private static String getRequest(Socket clientSocket) throws IOException {
  61.         BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
  62.         StringBuilder requestBuilder = new StringBuilder();
  63.  
  64.         String line;
  65.         while ((line = reader.readLine()) != null && !line.isEmpty()) {
  66.             requestBuilder.append(line).append("\r\n");
  67.         }
  68.  
  69.         return requestBuilder.toString();
  70.     }
  71.  
  72.     private static void handleGetRequest(OutputStream outputStream, String request) throws IOException {
  73.         if (request.startsWith("GET / HTTP")) {
  74.             sendHelloWorldResponse(outputStream);
  75.         } else if (request.startsWith("GET /about HTTP")) {
  76.             sendAboutPageResponse(outputStream);
  77.         } else {
  78.             sendNotFoundResponse(outputStream);
  79.         }
  80.     }
  81.  
  82.     private static void handlePostRequest(OutputStream outputStream, String request) throws IOException {
  83.         String postData = extractPostData(request);
  84.  
  85.         // Extrair os dados do corpo da requisição POST e manipular a lógica
  86.         if (!postData.isEmpty()) {
  87.             // Manipular a lógica do corpo da requisição POST
  88.             String response = "HTTP/1.1 200 OK\r\n\r\nPOST Request handled successfully.";
  89.             outputStream.write(response.getBytes("UTF-8"));
  90.             outputStream.flush();
  91.         } else {
  92.             // Caso não tenha dados no corpo da requisição
  93.             String response = "HTTP/1.1 400 Bad Request\r\n\r\nEmpty POST Request.";
  94.             outputStream.write(response.getBytes("UTF-8"));
  95.             outputStream.flush();
  96.         }
  97.     }
  98.  
  99.     private static Map<String, String> parsePostParameters(String postData) {
  100.         Map<String, String> params = new HashMap<>();
  101.  
  102.         if (postData != null && !postData.isEmpty()) {
  103.             String[] paramPairs = postData.split("&");
  104.             for (String paramPair : paramPairs) {
  105.                 String[] keyValue = paramPair.split("=");
  106.                 if (keyValue.length == 2) {
  107.                     String key = keyValue[0];
  108.                     String value = keyValue[1];
  109.                     params.put(key, value);
  110.                 }
  111.             }
  112.         }
  113.  
  114.         return params;
  115.     }
  116.  
  117.     private static String extractPostData(String request) {
  118.         int startIndex = request.indexOf("\r\n\r\n");
  119.         if (startIndex != -1) {
  120.             return request.substring(startIndex + 4);
  121.         }
  122.         return "";
  123.     }
  124.  
  125.     private static void handlePutRequest(OutputStream outputStream, String request) throws IOException {
  126.         String putData = extractPutData(request);
  127.  
  128.         if (!putData.isEmpty()) {
  129.             // Manipular a lógica do corpo da requisição PUT
  130.             String response = "HTTP/1.1 200 OK\r\n\r\nPUT Request handled successfully.";
  131.             outputStream.write(response.getBytes("UTF-8"));
  132.             outputStream.flush();
  133.         } else {
  134.             // Caso não tenha dados no corpo da requisição
  135.             String response = "HTTP/1.1 400 Bad Request\r\n\r\nEmpty PUT Request.";
  136.             outputStream.write(response.getBytes("UTF-8"));
  137.             outputStream.flush();
  138.         }
  139.     }
  140.  
  141.     private static void handleDelete
Tags: Java http
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement