Разобрать строку, содержащую тело запроса multipart/form-data в JavaJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Разобрать строку, содержащую тело запроса multipart/form-data в Java

Сообщение Anonymous »

Постановка проблемы

Я думаю, в названии сказано все: я ищу способ проанализировать String, содержащую часть тела HTTP-запроса multipart/form-data. Т.е. содержимое строки будет выглядеть примерно так:

Код: Выделить всё

--xyzseparator-blah
Content-Disposition: form-data; name="param1"

hello, world
--xyzseparator-blah
Content-Disposition: form-data; name="param2"

42
--xyzseparator-blah
Content-Disposition: form-data; name="param3"

blah, blah, blah
--xyzseparator-blah--
Я надеюсь получить карту параметров или что-то подобное, вроде этого.

Код: Выделить всё

parameters.get("param1");    // returns "hello, world"
parameters.get("param2");    // returns "42"
parameters.get("param3");    // returns "blah, blah, blah"
parameters.keys();           // returns ["param1", "param2", "param3"]
Дополнительные критерии
  • Было бы лучше, если бы мне не приходилось это делать укажите разделитель (т. е. xyzseparator-blah в данном случае), но я могу с этим смириться, если понадобится.
  • Я ищу решение на основе библиотеки, возможно, из основной библиотеки потоков (например, «Apache Commons» или что-то подобное).
  • Хочу избежать накатывания собственного решения, но на данном этапе, боюсь, мне придется. Причина: хотя приведенный выше пример кажется тривиальным для разделения/анализа с некоторыми манипуляциями со строками, реальные тела составных запросов могут иметь гораздо больше заголовков. Кроме того, я не хочу заново изобретать (а тем более заново тестировать!) велосипед :)
Альтернативное решение< /h2>

Если бы существовало решение, которое удовлетворяет вышеуказанным критериям, но входные данные которого представляют собой Apache HttpRequest вместо строки, это было бы тоже приемлемо.
(По сути, я получаю HttpRequest, но используемая мной собственная библиотека построена таким образом, что она извлекает тело этого запроса в виде строки и передает его классу, ответственному за Однако при необходимости я мог бы также работать непосредственно с HttpRequest.)

Вопросы по теме
Неважно как я пытаюсь найти ответ через Google, здесь, на SO, а также на других форумах, кажется, что решение всегда состоит в том, чтобы использовать загрузку файла Commons для просмотра частей. Например: здесь, здесь, здесь, здесь, здесь...
Однако метод parseRequest, используемый в этом решении, ожидает RequestContext, которого у меня нет (только HttpRequest).

Другой способ, также упомянутый в некоторых из приведенных выше ответов, — это получение параметров из HttpServletRequest (но опять же, у меня есть только HttpRequest).

EDIT: Другими словами: я мог включить Commons Fileupload (у меня есть доступ к нему), но это мне не поможет, потому что у меня есть HttpRequest, а для загрузки файлов Commons требуется RequestContext. (Если только не существует простого способа преобразования HttpRequest в RequestContext, который я пропустил.)

Подробнее здесь: https://stackoverflow.com/questions/484 ... dy-in-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»