将 HTML 文件加载到输出流

Posted

技术标签:

【中文标题】将 HTML 文件加载到输出流【英文标题】:Loading a HTML file to an output stream 【发布时间】:2017-07-09 19:57:42 【问题描述】:

我目前正在尝试制作代理服务器。 我目前正在处理的部分是阻止某些 URL。

我创建了一个基本的 html 页面,只要输入一个被阻止的 URL,它就会显示出来,但它目前不工作。

这是我服务器那部分的代码。

Scanner scanner = new Scanner( new File("filePath") );
String htmlString = scanner.useDelimiter("\\Z").next();
scanner.close();
byte htmlBytes[] = htmlString.getBytes("UTF-8");
toClient.write(htmlBytes);

toClient 是我的浏览器的输出流,即

client = mySocket.accept();
OutputStream toClient = client.getOutputStream();

任何帮助表示赞赏,谢谢。

【问题讨论】:

文件filepath中有什么内容?您需要先将所有 HTTP 标头发送到客户端,以便浏览器理解它。 @SteveSmith 文件路径是我创建的一个基本 HTML 文件,它只是说 URL 被阻止。 您需要先发送正确的 HTTP 响应标头。 【参考方案1】:

响应必须包含以下标头信息。

OutputStream clientOutput = client.getOutputStream();

clientOutput.write("HTTP/1.1 200 OK\r\n".getBytes());
clientOutput.write(("ContentType: text/html\r\n").getBytes());
clientOutput.write("\r\n".getBytes());

Scanner scanner = new Scanner(new File("server.html"));
String htmlString = scanner.useDelimiter("\\Z").next();
scanner.close();
clientOutput.write(htmlString.getBytes("UTF-8"));

clientOutput.write("\r\n\r\n".getBytes());
clientOutput.flush();

【讨论】:

以上是关于将 HTML 文件加载到输出流的主要内容,如果未能解决你的问题,请参考以下文章