#java #http #post #networking
#Ява #http #Публикация #сетевой
Вопрос:
Я пытаюсь написать простой HTTP-сервер, но не могу понять, как прочитать основной сегмент POST-запроса. У меня возникли проблемы с чтением дальше пустой строки после заголовков.
Вот что я делаю:
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); StringBuilder request = new StringBuilder(); String line; while(!(line = br.readLine()).isEmpty()) { request.append(line).append(CRLF); System.out.println(line); } // read body ?
Таким образом, это в основном загружает запрос и заголовки в строку. Но я не могу понять, как пропустить ту единственную строку, которая отделяет заголовки от тела.
Я пробовал readLine() != null или вручную прочитать еще две строки после завершения цикла, но это приводит к циклу.
Ответ №1:
Попробуйте проанализировать заголовок длины содержимого, чтобы получить количество байтов. После пустой строки вы захотите прочитать ровно столько байтов. Использование readLine() не будет работать, потому что тело не завершается CRLF.