我正在尝试使Java Web服务器将if-modified-since与文件的最后修改时间进行比较。
但是,我不知道如何从客户端获取if-modified-since标头并进行比较。
最佳答案
我不会立即尝试处理特定的标头。如果要从头开始编写Web服务器,则应该编写一个通用的HTTP解析器,该解析器可以处理HTTP请求的每个部分:
请求行
请求方法(GET
,POST
等)
网址
HTTP版本
零个或多个形式为Name: Value
的标头
空行
邮件正文
例如,您可以建立一个类似的类:
class HttpRequest {
String method;
URL url;
String httpVersion;
Map<String, String> headers;
byte[] body;
}
由于标头名称不区分大小写,因此建议将map与
String.CASE_INSENSITIVE_ORDER
一起使用。一旦可以解析所有标头,然后查找特定标头将是一个简单的任务。如果您有上述课程,那就像查找
headers.get("If-Modified-Since")
一样容易。