Как обработать 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() - будет грузить, пока клиент подключен, а мне нужно получить всё что он отправил, как то найти такой способ, как так сделать?