HTTP 服务器问题
HTTP Server issues
大家好,我有一个非常基本的 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,但我不明白为什么它不起作用
感谢您的帮助
您是否在写入所有数据后刷新并关闭了 BufferedOutputStream?
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
header(或使用分块传输编码)。
大家好,我有一个非常基本的 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,但我不明白为什么它不起作用
感谢您的帮助
您是否在写入所有数据后刷新并关闭了 BufferedOutputStream?
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
header(或使用分块传输编码)。