2014-03-02 68 views
6

我試圖顯示從服務器收到的HTML。然而,目前的代碼僅適用於非常有效的幾個簡單 HTML代碼(例如不良請求頁面)。顯示HTML的Java

這是一個非常簡單的HTML示例,我無法使用當前代碼進行管理。

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> 
<TITLE>302 Moved</TITLE></HEAD><BODY> 
<H1>302 Moved</H1> 
The document has moved 
<A HREF="http://www.google.be/index.html?gfe_rd=cr&amp;ei=uhoTU6CaDoSNOrHrgeAL">here</A>. 
</BODY></HTML> 

這是我的代碼,它在JFrame內部運行。

JEditorPane ed1 = new JEditorPane("text/html", content); 
add(ed1); 
setVisible(true); 
setSize(600,600); 
setDefaultCloseOperation(EXIT_ON_CLOSE); 

請注意,content只是一個字符串,每一行HTML鏈接在一起。像這樣:content = "<HTML>.............</HTML>"

可能有更優雅的解決方案來獲取服務器響應並顯示它們。但是,我僅限於java.iojava.net包。

+0

刪除''標籤並試一試。 – 2014-03-02 12:13:57

+1

似乎確實解決了我對此響應的問題。謝謝! – drx

+0

更多信息。 「不工作」是什麼意思?向我們展示輸入和失敗輸出的簡單示例。請記住,JEditorPane *不是*瀏覽器,並且不會爲您呈現大部分標籤。 – keshlam

回答

4

此代碼將HTML寫入文件,然後繼續使用默認瀏覽器打開此文件。

File file = new File("test.html"); 
try { 
    Files.write(file.toPath(), content.getBytes()); 
    Desktop.getDesktop().browse(file.toURI()); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
} 
2

JEditorPane中的HTML支持非常基本,基本上是HTML 3.2,對樣式的支持非常有限。你可能想嘗試一個替代的渲染器組件,如flying saucer,它可以更好地處理更現代的標準,比如XHTML和CSS。

1

考慮下面的代碼:

JEditorPane edit1 = new JEditorPane("text/html",content); 

你試過更換text/htmltext/plain,以便它被視爲純文本和HTML不?