Рендеринг HTML-страницы с использованием API кобры в веб-браузере на основе Java, сделанные мной
API-интерфейс КОБРЫ запрашивает InputStream и uri в качестве входных данных для разбора, но я не могу использовать его метод parse(). В случае, если мы используем метод, указанный ниже, генерируется исключение тайм-аута соединения. Что делать, чтобы использовать этот API для успешно визуализировать и отобразить веб-страницу в веб-браузере, который я создал в Java..?? Вот код:
private void createNewTab() throws Exception{
//JPanel panel=new JPanel(new BorderLayout());
HtmlPanel panel = new HtmlPanel();
WebBrowserPane browserPane = new WebBrowserPane();
WebToolBar toolBar = new WebToolBar(browserPane);
//panel.add(toolBar, BorderLayout.NORTH);
//panel.add(new JScrollPane(browserPane), BorderLayout.CENTER);
UserAgentContext ucontext = new SimpleUserAgentContext();
SimpleHtmlRendererContext rcontext = new SimpleHtmlRendererContext(panel, ucontext);
// Note that document builder should receive both contexts.
DocumentBuilderImpl dbi = new DocumentBuilderImpl(ucontext, rcontext);
// A documentURI should be provided to resolve relative URIs.
// Open a connection on the URL we want to render first.
String uri = "http://lobobrowser.org/browser/home.jsp";
URL url = new URL(uri);
URLConnection connection = url.openConnection();
connection.connect();
InputStream in = connection.getInputStream();
// A Reader should be created with the correct charset,
// which may be obtained from the Content-Type header
// of an HTTP response.
Reader reader = new InputStreamReader(in);
Document document = dbi.parse(new InputSourceImpl(reader, uri));
// Now set document in panel. This is what causes the document to render.
panel.setDocument(document, rcontext);
tabbedPane.addTab("Browser " + tabbedPane.getTabCount(), panel);
}
private class NewTabAction extends AbstractAction {
public NewTabAction() {
putValue(Action.NAME, "New Browser Tab");
putValue(Action.SHORT_DESCRIPTION, "Create New Web Browser Tab");
putValue(Action.MNEMONIC_KEY, new Integer('N'));
}
public void actionPerformed(ActionEvent event) {
try{ createNewTab();} catch(Exception e){e.printStackTrace();}
}
}
private class ExitAction extends AbstractAction {
public ExitAction() {
putValue(Action.NAME, "Exit");
putValue(Action.SHORT_DESCRIPTION, "Exit Application");
putValue(Action.MNEMONIC_KEY, new Integer('x'));
}
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
}
public static void main(String args[]) {
TabbedPaneWebBrowser browser = new TabbedPaneWebBrowser();
browser.setDefaultCloseOperation(EXIT_ON_CLOSE);
browser.setSize(640, 480);
browser.setVisible(true);
}
}
Приведенный выше фрагмент относится к методу createnewTab() моего браузера, который должен открыть веб-страницу в новой вкладке этого браузера.