Java 构建HTTP响应头
正在尝试从头开始构建web服务器。它适用于html和其他纯文本文件。在Firefox和Chrome中测试。但我很难让图像正确显示。返回状态200,在Firefox中,我根据请求获得附加图像。除了响应头之外,我是否需要使用printstream以不同的方式处理图像文件类型 如果需要任何进一步的信息,请询问。我非常愿意提供任何额外的细节,或者回答任何我能回答的问题Java 构建HTTP响应头,java,http,httpresponse,printstream,Java,Http,Httpresponse,Printstream,正在尝试从头开始构建web服务器。它适用于html和其他纯文本文件。在Firefox和Chrome中测试。但我很难让图像正确显示。返回状态200,在Firefox中,我根据请求获得附加图像。除了响应头之外,我是否需要使用printstream以不同的方式处理图像文件类型 如果需要任何进一步的信息,请询问。我非常愿意提供任何额外的细节,或者回答任何我能回答的问题 编辑:进一步检查后,我在Firefox中得到了404,我不确定Chrome是什么,显示的页面是“无法访问此站点…”,但似乎我得到了20
编辑:进一步检查后,我在Firefox中得到了404,我不确定Chrome是什么,显示的页面是“无法访问此站点…”,但似乎我得到了200个返回。我想我可以看到一个错误:
if(fileExt.equals("jpg") || fileExt.equals("jpeg") ||fileExt.equals("png") ||
fileExt.equals("ico"))
out.println("Content type: image/" + fileExt);
else
out.print("Content type: text/");
if(fileExt.equals("html"))
out.println(fileExt);
else
out.println("plain");
如果我重新缩进并插入{},Java编译器认为它们应该在哪里
if (fileExt.equals("jpg") || fileExt.equals("jpeg") ||
fileExt.equals("png") || fileExt.equals("ico")) {
out.println("Content type: image/" + fileExt);
} else {
out.print("Content type: text/");
}
if (fileExt.equals("html")) {
out.println(fileExt);
} else {
out.println("plain");
}
看到问题了吗?如果扩展名是(比如)“jpg”,您将在标题中添加一个虚假的“普通”行
我想你真的想写这个:
这说明:
if(fileExt.equals(“html”))
应该是else if(fileExt.equals(“html”)
(或者一些如何附加到以前的else
…基本上,使用大括号)。还有,你为什么要这样做?行终止符应该是\r\n
,而不是println()
给你的任何东西。@ElliottFrisch抱歉前面的先发制人的评论。你的想法是对的,那是个问题。我的问题的另一半没有显示在所选代码中。@EJP当时可能都可以接受,因为我目前正在使用它,而且我没有使用\r\n
。接受什么并不重要。重要的是什么是对的。RFC的理念是“发送的内容要保守,接受的内容要自由”。因此,你应该只发送正确的。这是正确的,上面已经提到过。谢谢你的回复。因此,任何好奇的人都很清楚。将来,如果你从评论中得到答案,最好删除这个问题。。。。。
if (fileExt.equals("jpg") || fileExt.equals("jpeg") ||
fileExt.equals("png") || fileExt.equals("ico")) {
out.println("Content type: image/" + fileExt);
} else {
out.print("Content type: text/");
}
if (fileExt.equals("html")) {
out.println(fileExt);
} else {
out.println("plain");
}
if (fileExt.equals("jpg") || fileExt.equals("jpeg") ||
fileExt.equals("png") || fileExt.equals("ico")) {
out.println("Content type: image/" + fileExt);
} else {
out.print("Content type: text/");
if (fileExt.equals("html")) {
out.println(fileExt);
} else {
out.println("plain");
}
}