Получить содержимое потока HTTP в Java + Mozilla XPCOM

Я часто читаю StackOverflow как источник ответов; но теперь у меня очень конкретный вопрос, и я не могу найти никаких данных в Интернете. Я верю, что вы будете так же полезны, как всегда! :D

По сути, я полагаюсь на XULRunner от Mozilla и его объекты XPCOM для анализа потока HTTP браузера SWT в приложении Java в Linux.

В значительной степени основанный на Snippet128 и Snippet321 с веб-сайта Java SWT (не могу опубликовать более 1 URL-адреса, извините :/), мой браузер до сих пор может анализировать все заголовки HTTP с помощью nsIHttpHeaderVisitor — и делать некоторые приятные вещи, такие как печать их на дерево и тому подобное.

Полный исходный код находится здесь.

Теперь... Это уже довольно хорошо. Он охватывает большую часть того, что я хочу делать (сначала школьное задание, идущее немного дальше, чем просили!).

Но чего бы я действительно хотел, так это иметь возможность получать необработанные данные «контента» из каждого HTTP-запроса: HTML, конечно; но также CSS и изображения.

Я пытался разными способами достичь этой цели, но пока все не удалось:

  1. Использование объекта XPCOM — какой?

    • nsIInputStream would be a good one. But I can't seem to find where the good stream actually is... The nsIHttpChannel open() method (who gives back an nsIInputStream) seems to be called by the SWT browser, leaving me with no way of getting the stream back.
    • nsIRequest: не повезло.
    • еще один слушатель, которого я бы пропустил? Я только что потратил час, пытаясь использовать интерфейс nsIHttpActivityObserver, но он не дает мне никакого HTTP-контента (просто GET и 200 OK).
  2. Использование другого объекта

    • the SWT's browser for instance. Well it kinda works: its getText() method gives me the html source of the page I'm visiting. But I want more!

Я действительно застрял здесь, и я был бы очень признателен за любую помощь.

Ваше здоровье!

Флоран


person Florent    schedule 11.03.2010    source источник


Ответы (1)


Возможно, nsITraceableChannel может вам помочь?

person Neil    schedule 13.04.2010