Java: внешнее приложение «Контроль» - PullRequest
0 голосов
/ 30 марта 2009

Можно ли программно запустить приложение из Java, а затем отправлять ему команды и получать выходные данные программы?

Я пытаюсь реализовать этот сценарий:

Я хочу получить доступ к веб-сайту, который использует множество JavaScript и специальные функции HTML + CSS -> веб-сайт не отображается должным образом в swt.browser или любом другом из доступных виджетов браузера. Но сайт может отображаться без проблем в Firefox. Поэтому я хочу запустить скрытый экземпляр Firefox, загрузить веб-сайт и получить данные. (Было бы хорошо, если бы FF мог быть встроен в JFrame или около того ..)

Кто-нибудь понял, как это реализовать? Буду признателен за любую помощь!

РЕДАКТИРОВАТЬ: веб-сайт загружает некоторый Javascript, который делает html-магию и загружает некоторые картинки Когда я читаю только html с сайта, я не вижу ничего, кроме некоторых вызовов JavaScript. Но когда веб-сайт загружается в браузер, он отображает некоторые изображения с текстом. Вот что я пытаюсь показать пользователю моего приложения.

Ответы [ 5 ]

1 голос
/ 30 марта 2009

См. Эту статью - она ​​научит вас запускать процесс, читать его выходные данные и записывать в его входной поток.

Однако это решение может быть не лучшим для вашей проблемы. Какие данные вам нужно получить с веб-страницы? Было бы лучше прочитать html с помощью HTTP GET, а затем проанализировать его с помощью Html-анализатора?

1 голос
/ 30 марта 2009

Чтобы запустить Firefox из приложения, вы можете использовать:

Runtime runtime = Runtime.getRuntime();
try {
    String path = "/path/to/firefox";
    Process process = runtime.exec(path + " " + url);
} catch (IOException e) {
    // ...
}

Чтобы манипулировать процессами после их запуска, часто можно использовать process.getInputStream () и process.getOutputStream () , но это не поможет вам в случае Firefox .

Вероятно, вам следует искать способы решения вашей конкретной проблемы, кроме попыток прямого взаимодействия между вашим приложением и экземпляром браузера. Попробуйте переместить весь интерфейс в графический интерфейс Java или создать веб-приложение с нуля, а не пополам.

0 голосов
/ 30 марта 2009

Хотя функция, аналогичная описанной вами , планируется для FireFox в будущем, она пока недоступна. Эта функция называется TaskFox , и из связанной вики "ее цель - дать пользователям быстрый доступ к информации и выполнять задачи, для выполнения которых обычно требуется несколько шагов".

Новости о грядущей функции TaskFox только что объявлены сегодня. Возможно, вам стоит подумать о карьере экстрасенса, а не программиста.

0 голосов
/ 30 марта 2009

Если веб-сайт статичен, вы можете использовать веб-скребок, например Jericho , чтобы загрузить URL-адрес, проанализировать HTML-код и пройтись по DOM к нужной информации.

0 голосов
/ 30 марта 2009

Если у вас есть браузер в текстовом режиме (например, links2 в linux), вы можете посмотреть, насколько хорошо может отображать страницу. Например, команда «links -dump http://someurl.com"» отформатирует страницу как текст и сразу выйдет, что приведет к тому, что вывод будет легко разбираться с использованием методов, предложенных Рэем Майерсом и kgiannakakis.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...