Java HttpServletResponse с пустыми заголовками? - PullRequest
1 голос
/ 24 июня 2011

Как мне сделать ответ сервера приложений на основе java с пустым заголовком ответа, например так?

content-length:\r\n

К сожалению, когда я звоню

response.setHeader("Content-Length", len)

, где lenлибо пустая строка, либо ноль, в ответ не будет включен заголовок.

Я проверил javadocs HttpServletResponse и HttpServletResponseWrapper, но не смог выяснить, что можно переопределить, чтобы обеспечить мое пользовательское поведение.1010 * Справочная информация

Я создаю тестовое приложение, которое должно эмулировать сценарии HTTP-сервера с плохим поведением.Предполагается, что приложение отвечает на запросы с предустановленными страницами и заголовками HTTP, включая искаженные, как в предыдущем случае.Приложение написано в Grails.

Ответы [ 3 ]

1 голос
/ 24 июня 2011

Я создаю тестовое приложение, которое должно эмулировать сценарии HTTP-сервера с плохим поведением.

В таком случае попытка заставить хорошо работающий сервер имитировать такое поведение - плохая идея. Если вам нужно имитировать плохой сервер или определенный набор сценариев, которые вы хотите протестировать, вы можете выполнить одно из следующих действий:

  • написать пользовательское приложение, которое прослушивает определенный порт (используя класс ServerSocket), которое ответит неверно сформированными заголовками HTTP. Использование библиотек HTTP может не помочь, поскольку библиотеки могут иметь код для определения ошибочных условий и их автоматического исправления.
  • использует HTTP-прокси, который способен перехватывать ответы и позволяет изменять эти ответы. Вы найдете несколько, если вы Google для "http отладки прокси", но если вы еще не слышали, я бы посоветовал посмотреть Fiddler , WebScarab или Burp .
1 голос
/ 24 июня 2011

Вы можете попробовать такой инструмент, как SoapUI или Fiddler с расширением Firefox. Я не пробовал устанавливать с ними искаженный заголовок, но я бы не удивился, если бы вы могли.

0 голосов
/ 24 июня 2011

Что-то неясно для меня: ваше приложение написано на Grails, но вы обсуждаете javadocs ... Ну, я полагаю, вы пытаетесь создать плохой сервер в JAVA ...

Как вы сказали, ответ "Content-Length: \ r \ n" недопустим для HTTP. Вы должны поставить целочисленное значение или отбросить заголовок. Я думаю, setHeader () поможет вам избежать создания недопустимого HTTP-сообщения.

Вы можете обойти этот способ, создавая заголовки вручную (вы можете записывать напрямую в сокет без использования блоков setHeader).

Другое решение - создать фильтр (в дополнение к сервлету) с собственной реализацией HttpServletResponse. Вы передадите эту реализацию сервлету.

...