嗨,伙计们,我有一个非常基本的http服务器,大约在30分钟内编写了一个任务,并遇到了一个非常奇怪的问题。我们被指定只使用BufferedOutputStream而不是StreamWriter,因为使用PrintWriters显然有问题,因为它们在不同的平台上执行不同的操作。我很困惑,因为我有我的方法.
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,但是我不明白为什么它不能工作
谢谢你的帮助
发布于 2016-08-06 04:57:35
写完所有的数据后,你是否脸红并关闭了BufferedOutputStream?
发布于 2016-08-06 05:17:08
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()),然后在编写了需要编写的所有内容时刷新它。
注意,在HTTP1.1中,您必须关闭BufferedOutputStream或提供一个Content-length头(或者使用块传输编码)。
https://stackoverflow.com/questions/38800667
复制相似问题