将 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 文件加载到输出流的主要内容,如果未能解决你的问题,请参考以下文章
使用java的输入,输出流将一个文本文件的内容按行读出,每读一行就顺序添加行号,并写入到另一个文件