Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- public class HttpServer {
- private static final Logger logger = Logger.getLogger(HttpServer.class.getName());
- public static void main(String[] args) {
- int port = 8080;
- try {
- ServerSocket serverSocket = new ServerSocket(port);
- logger.info("Server started on port " + port);
- while (true) {
- Socket clientSocket = serverSocket.accept();
- logger.info("Accepted connection from " + clientSocket.getInetAddress());
- Thread requestHandlerThread = new Thread(() -> {
- try {
- OutputStream outputStream = clientSocket.getOutputStream();
- String request = getRequest(clientSocket);
- logger.info("Received request: " + request);
- if (request.startsWith("GET")) {
- handleGetRequest(outputStream, request);
- } else if (request.startsWith("POST")) {
- handlePostRequest(outputStream, request);
- } else if (request.startsWith("PUT")) {
- handlePutRequest(outputStream, request);
- } else if (request.startsWith("DELETE")) {
- handleDeleteRequest(outputStream, request);
- } else {
- handleDefaultResponse(outputStream);
- }
- clientSocket.close();
- logger.info("Connection closed");
- } catch (IOException e) {
- logger.log(Level.SEVERE, "An error occurred while handling request", e);
- }
- });
- requestHandlerThread.start();
- }
- } catch (IOException e) {
- logger.log(Level.SEVERE, "An error occurred while starting the server", e);
- }
- }
- private static String getRequest(Socket clientSocket) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
- StringBuilder requestBuilder = new StringBuilder();
- String line;
- while ((line = reader.readLine()) != null && !line.isEmpty()) {
- requestBuilder.append(line).append("\r\n");
- }
- return requestBuilder.toString();
- }
- private static void handleGetRequest(OutputStream outputStream, String request) throws IOException {
- if (request.startsWith("GET / HTTP")) {
- sendHelloWorldResponse(outputStream);
- } else if (request.startsWith("GET /about HTTP")) {
- sendAboutPageResponse(outputStream);
- } else {
- sendNotFoundResponse(outputStream);
- }
- }
- private static void handlePostRequest(OutputStream outputStream, String request) throws IOException {
- String postData = extractPostData(request);
- // Extrair os dados do corpo da requisição POST e manipular a lógica
- if (!postData.isEmpty()) {
- // Manipular a lógica do corpo da requisição POST
- String response = "HTTP/1.1 200 OK\r\n\r\nPOST Request handled successfully.";
- outputStream.write(response.getBytes("UTF-8"));
- outputStream.flush();
- } else {
- // Caso não tenha dados no corpo da requisição
- String response = "HTTP/1.1 400 Bad Request\r\n\r\nEmpty POST Request.";
- outputStream.write(response.getBytes("UTF-8"));
- outputStream.flush();
- }
- }
- private static Map<String, String> parsePostParameters(String postData) {
- Map<String, String> params = new HashMap<>();
- if (postData != null && !postData.isEmpty()) {
- String[] paramPairs = postData.split("&");
- for (String paramPair : paramPairs) {
- String[] keyValue = paramPair.split("=");
- if (keyValue.length == 2) {
- String key = keyValue[0];
- String value = keyValue[1];
- params.put(key, value);
- }
- }
- }
- return params;
- }
- private static String extractPostData(String request) {
- int startIndex = request.indexOf("\r\n\r\n");
- if (startIndex != -1) {
- return request.substring(startIndex + 4);
- }
- return "";
- }
- private static void handlePutRequest(OutputStream outputStream, String request) throws IOException {
- String putData = extractPutData(request);
- if (!putData.isEmpty()) {
- // Manipular a lógica do corpo da requisição PUT
- String response = "HTTP/1.1 200 OK\r\n\r\nPUT Request handled successfully.";
- outputStream.write(response.getBytes("UTF-8"));
- outputStream.flush();
- } else {
- // Caso não tenha dados no corpo da requisição
- String response = "HTTP/1.1 400 Bad Request\r\n\r\nEmpty PUT Request.";
- outputStream.write(response.getBytes("UTF-8"));
- outputStream.flush();
- }
- }
- private static void handleDelete
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement