2016-09-18 16 views
0

我在Java中有一个简单的应用程序,它将一些HTML代码写入OutputStream通过Java中的OutputStream发送给Firefox的HTML代码未被识别

运行此操作并使用Chromium或Opera打开连接完美,而Firefox使用HTML代码不会按原样解释和显示。

包含代码的字符串是像以下之一:

HTMLCode = "<!DOCTYPE html>\n<html>\n<body>\n<h1>\n" 
      + "The sum of " + operand1 + " and " + operand2 + " is " + result 
      + "\n</h1>\n</body>\n</html>"; 

其中operand1operand2resultString秒。

我通过下面的代码写入到OutputStream

new PrintStream(out).println(HTMLCode); 

铬和Opera正确显示,例如,以下:

10的总和和20是30

火狐显示

<!DOCTYPE html> 
<html> 
<body> 
<h1> 
The sum of 2 and 34 is 36 
</h1> 
</body> 
</html> 
+0

您是发送一个完整的HTTP响应(包含头文件),还是只发送一些HTML? – kkaosninja

+0

正如你所看到的,我只是通过'OutputStream'发送一个包含HTML代码的'String'。 – Michael

+0

发送正确的[html标题](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields)。例如'content-type','Status'和'Date' – copeg

回答

1

在实际内容之前发送正确的HTML标头。

PrintStream ps = new PrintStream(out); 
DateFormat df = new SimpleDateFormat("EEE, MMM d, yyyy HH:mm:ss z"); 
ps.println("HTTP/1.1 200 OK"); 
ps.println("Content-Type: text/html; charset=UTF-8"); 
ps.println("Date: " + df.format(new Date())); 
ps.println("Connection: close"); 
ps.println(); 
ps.println(HTMLCode); 
+0

不幸的是,情况变得更糟,因为即使Chromium和Opera将其解释为文本也会按原样显示。 – Michael

+0

您需要找到适当的标题才能使用并适当修改它们。每个浏览器的功能都有所不同。请参阅编辑,它适用于Firefox和Chrome浏览器 – copeg