1

下面是我的代码。在这段代码中,我使用 Java 套接字将一些 HTML 文本发送到特定端口(在本例中为 8900)。要访问通过 Java 套接字发送的 HTML 内容,我使用http://localhost:8900/本地浏览器上的 URL。问题在于,虽然 Chrome 和 Internet Explorer 可以很好地呈现 HTML 文本,但 Mozilla 只是将整个 HTML 内容显示为简单的文本。有什么解决办法吗?

import java.net.*;
import java.io.*;

class Proxy
{
     public static void main(String args[])
     {
          try
          {
                ServerSocket svr = new ServerSocket(8900);
                System.out.println("waiting for request");
                Socket s = svr.accept();
                System.out.println("got a request");
                InputStream in = s.getInputStream();
                OutputStream out = s.getOutputStream();

                FileOutputStream fout = new FileOutputStream("d:\\q.txt");
                int x;
                byte data[]= new byte[1024];

                x = in.read(data);
                fout.write(data,0,x);

                fout.flush();
                fout.close();

                String response  = "<html><head><title>HTML content via java socket</title></head><body><h2>Hi! Every Body.</h2></body></html>";
                out.write(response.getBytes());
                out.flush();

                s.close();
                svr.close();
                System.out.println("closing all");
          }
          catch(Exception ex)
          {
                System.out.println("Err : " + ex);
          }
     }
}
4

1 回答 1

3

您的服务器未正确实现 HTTP 协议。您直接发送 HTTP 响应的正文,而不是发送回正确的 HTTP 响应,从状态行开始,然后是 HTTP 标头(应在其中指定 HTML 内容类型),然后是空行,最后是响应体。

http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Response_message

于 2013-04-12T13:13:32.440 回答