我正在编写我的第一个非常简单的Java Server。
在方法sendAnswer中我有两种情况:1 - 如果URL有“/ s”我希望用户在浏览器消息页面中看到然后附加用户的IP地址。那么,我的第一个问题是,如何将thisIp.getHostAddress()附加到消息?
第二种情况 - 未找到 - 我希望用户在浏览器页面中找不到消息 - 它有效!但不是第一种情况 - 浏览器没有显示任何内容,我也收到错误 net :: ERR_CONTENT_LENGTH_MISMATCH 。你能告诉我,哪里出错了?
public void sendAnswer() throws IOException {
try {
if(request.getUri().equals("/s")) {
InetAddress thisIp = InetAddress.getLocalHost();
System.out.println("IP:"+thisIp.getHostAddress());
String msg = "HTTP/1.0 200 OK\r\n" +
"Content-Type: text/html\r\n" +
"Content-Length: 23\r\n" +
"\r\n" +
"<h1>Page</h1>";
output.write(msg.getBytes());
output.flush();
}
else {
// not found
String errorMessage = "HTTP/1.1 404 Page Not Found\r\n" +
"Content-Type: text/html\r\n" +
"Content-Length: 23\r\n" +
"\r\n" +
"<h1>Page Not Found</h1>";
output.write(errorMessage.getBytes());
output.flush();
}
}
catch (Exception e) {
// thrown if cannot instantiate a File object
System.out.println(e.toString() );
}
}
答案 0 :(得分:1)
正如@JacekCz(错误地)指出的那样,你错误地设置了内容长度:
net::ERR_CONTENT_LENGTH_MISMATCH
表示内容长度存在错误
String msg = "HTTP/1.0 200 OK\r\n" +
"Content-Type: text/html\r\n" +
"Content-Length: 23\r\n" +
"\r\n" +
"<h1>Page</h1>";
是错误的,因为您的邮件<h1>Page</h1>
的长度 13 ,而不是23(而不是10,如@JacekCz所评论的那样)。
通常,我们的问题的答案在于错误代码本身。在询问之前,请务必先阅读错误信息:)