Это потому, что в общем случае представление фактически не читается из InputStream, пока вы не запросите его с помощью getText (), и как только вы попросите его, все байты будут прочитаны и преобразованы в строку.
Это естественная реализация для эффективности: вместо того, чтобы создавать потенциально очень большую строку и затем конвертировать эту строку в нечто полезное (объект JSON, дерево DOM или что-то еще), вы пишете свой конвертер для работы с ним.Вместо этого InputStream, избегая затрат на создание и чтение этой огромной String.
Так, например, если у вас есть большой XML-файл, помещаемый в веб-службу, вы можете передать InputStream прямо в SAX-анализатор.1005 *
(Как отмечает @John, StringRepresentation оборачивает строку и может считываться несколько раз. Но вы должны читать представление запроса, которое, скорее всего, является InputRepresentation.)