【问题标题】:Loading a HTML file to an output stream将 HTML 文件加载到输出流
【发布时间】: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 响应标头。

标签: java html proxy server


【解决方案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();

【讨论】:

    猜你喜欢
    • 2011-08-10
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多