Сервлет: преобразовать ServletInputStream в FileInputStream
Я пишу сервлет, который получает XML-файл, передает его другому классу и дает HTML-файл с некоторыми комментариями обратно клиенту. Я получаю input-xml с чем-то вроде:
input = request.getInputStream();
но этот вход является ServletInputStream, а другой класс (для комментариев) нуждается в FileInputStream.
Если я даю XMLEventReader(в другом классе) ServletInputStream, я получаю ошибку разбора:
ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
И я думаю, что это из-за servletinputstream, а не fileinputstream.
Приветствую, надеюсь, кто-нибудь сможет мне помочь:)
3 ответа
Вы должны прочитать данные из ServletInputStream и вывести их в FileOutputStream. Таким образом, вы можете посмотреть на отправляемые данные, а затем протестировать эти данные отдельно, используя FileInputStream с классом, который вы описали и который нуждается в этом. Я предполагаю, что произойдет то же самое, что и сейчас, так как, как предполагал предыдущий автор, данные, вероятно, имеют неправильный формат.
Я думаю, что вряд ли последняя проблема связана с тем, что ServletInputStream
, Парсер не должен заботиться об источнике данных.
Я думаю, что более вероятно, что данные во входном потоке неверны.
Ваш класс, который в настоящее время требует FileInputStream
должен быть переработан для работы с InputStream
если это вообще возможно... в противном случае вам придется сначала записать данные в реальный файл, что, очевидно, не идеально.
Хорошо, теперь я немного умнее:) Проблема в том, что в ServletInputStream есть в начале (и одна строка в конце) некоторая информация заголовка (как тип контента и т. Д.). Есть ли разумное решение для вырезания этой информации?
Привет