Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Получить http запрос в сервлете


Автор: onx 24.10.2006, 21:54
День добрый!

Суть проблемы такова: в сервлете необходимо получить весь текст http запроса, со всеми заголовками и т.д.

пробовал так:
Код


public void doPost(HttpServletRequest request, HttpServletResponse response) {
    try {
        ServletInputStream in = request.getInputStream();
            
        int b = 0;
        while ((b = in.read()) != -1) {
            System.out.print( (char) ((byte) b) );
        }                
    } catch (IOException e) {
        e.printStackTrace();
    } 
}



выдает только те данные запроса которые находятся между разделителями(boundary), про заголовки ничего нет...(((
может быть кто-то знает как решить проблему?

Автор: batigoal 25.10.2006, 08:58
Заголовки можно извлечь методами getHeadersgetHeadergetHeaderNames на объекте request.

Автор: onx 27.10.2006, 00:15
Я пытался использовать эти методы, но, к сожалению, они возвращают не совсем то, что мне надо.
Мне требовалось из HttpServletRequest получить весь текст запроса, что то типа такого:

GET / HTTP/1.1
User-Agent: Opera/9.02 (Windows NT 5.1; U; ru)
Host: 127.0.0.1:8011
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Connection: Keep-Alive
------------------------------(boundary)
тело запроса
------------------------------(boundary)--

Автор: batigoal 27.10.2006, 08:06
Цитата(onx @  27.10.2006,  01:15 Найти цитируемый пост)
Я пытался использовать эти методы, но, к сожалению, они возвращают не совсем то, что мне надо.

А чего именно не хватает?

Автор: onx 28.10.2006, 22:28
Не было желания восстанавливать запрос с помощью getHeaderNames(), getHeader(), getInputStream() и т.д.,  
а надо было весь запрос передать в уже написаный метод, для парсинга,
вот и спросил, может кто-то получал весь текст запроса.

Вопрос, в принципе, уже не актуален, в связи с переходом на работу с сокетами.

Автор: Tony 29.10.2006, 01:24
DataInput data=new DataInputStream(request.getInputStream());
System.out.println(data.readLine());

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)