Как обработать HTTP запрос к сокет серверу?

Я при входящем подключение какого-то сокета получаю его InputStream, но я вот уже 3 дня мучаюсь не могу правильно обработать. Как полностью прочитать то, что отправил клиент (Вместе с телом запроса)? У меня есть маленький обработчик:

rawRequest = "";
var reader = new Scanner(input).useDelimiter("\r\n");
String line;
try {
    line = reader.nextLine();
    rawRequest += line + "\n";
    isPost = line.toLowerCase().startsWith("post");
    if(!line.toLowerCase().startsWith("get") && !line.toLowerCase().startsWith("post")){
        ArrayList<String> request = new ArrayList<>();
        request.add(line);
        while (reader.hasNextLine()){request.add(reader.nextLine());}

        System.out.println(request);
        return String.join("\n", request.toArray(new String[0]));
    }else {
        new Thread(() -> {
            while (true){
                try {
                    String l = reader.nextLine();
                    rawRequest += l;
                    rawRequest += "\n";
                }catch(Exception ignored){
                    ignored.printStackTrace();
                    break;
                }
            }
            rawRequest = new String(Arrays.copyOfRange(rawRequest.getBytes(), 0, rawRequest.getBytes().length-1));
        }).start();
        return "*"+line.split(" ")[1];

    }
} catch (Exception e) {
    return "index";
}

но дело в том что он не выполняет нужный код, и работает ну так как хотелось бы. Можете пожалуйста подсказать как прочитать всё, что оправил клиент (а дальше я сам)? И да, String lines = new BufferedReader(new InputStreamReader(input)).lines() - будет грузить, пока клиент подключен, а мне нужно получить всё что он отправил, как то найти такой способ, как так сделать?


Ответы (0 шт):