大家好,我有一个非常基本的http服务器,在大约30分钟内完成编码,并遇到了一个非常奇怪的问题。我们被指定只使用BufferedOutputStream而不是StreamWriter,因为使用PrintWriters显然存在问题,因为它们在不同平台上的表现不同。我很困惑,因为我有以下的println方法...
private void println(BufferedOutputStream bos, String s) throws IOException {
String toPrint = s + "\r\n";
byte[] array = toPrint.getBytes();
for (int i = 0; i < array.length; i++) {
bos.write(array[i]);
}
return;
}
我很困惑,因为使用
println(outStream,"HTTP/1.1 200 OK");
println(outStream,"");
println(outStream,"Hello World");
网页上说我还没有发送任何数据,只是使用...
writer.println("HTTP/1.1 200 OK");
writer.println("");
writer.println("Hello World");
一切都显得很完美..香港专业教育学院尝试了一些事情,如冲洗outStstream,但我不明白为什么它不会工作
感谢您的帮助
答案 0 :(得分:1)
写完所有数据后,你是否已刷新并关闭了BufferedOutputStream?
答案 1 :(得分:0)
private void println(BufferedOutputStream bos, String s) throws IOException {
String toPrint = s + "\r\n";
byte[] array = toPrint.getBytes();
for (int i = 0; i < array.length; i++) {
bos.write(array[i]);
}
return;
}
你不需要这一切。实际上你不需要它。只需在你调用它的地方直接调用bos.write((s+"\r\n").getBytes())
,然后在你编写完所需的所有内容时将其刷新。
请注意,在HTTP 1.1中,您必须关闭BufferedOutputStream
或提供Content-length
标头(或使用分块传输编码)。