#java #header #http-headers #httpclient #head
#java #заголовок #http-заголовки #httpclient #head
Вопрос:
Я должен использовать HEAD
метод HttpClient
, чтобы получить поле заголовка и проверить дату «последнего изменения» файла сервера.
Я не могу этого понять, если вы знаете, как получить поле заголовка, пожалуйста, ответьте. Как получить заголовок «last-modified» в объект String для сравнения.
Вот мой код:
HttpClient client = new DefaultHttpClient();
//HttpGet get = new HttpGet(url);
HttpHead method = new HttpHead(url);
HttpResponse response= client.execute(method);
Header[] s = response.getAllHeaders();
System.out.println("THe header from the httpclient:");
for(int i=0; i < s.length; i ){
Header hd = s[i];
System.out.println("Header Name: " hd.getName()
" " " Header Value: " hd.getValue());
}
Ответ №1:
В HttpClient 4.5 вы бы использовали:
final HttpHead headMethod = new HttpHead(fileUri);
final Header header = headMethod.getFirstHeader("last-modified");
final String lastModified = header.getValue();
Ответ №2:
HeadMethod head = new HeadMethod("http://jakarta.apache.org");
// Excecute the method here with your HttpClient
Header[] headers = head.getResponseHeaders();
String lastModified = head.getResponseHeader("last-modified").getValue();
Вам нужно будет добавить собственную обработку ошибок.
Комментарии:
1. да, это write, но когда я использовал его, я получал следующую ошибку. ……..HeadMethod не может быть преобразован в тип. не могли бы вы рассказать мне, как решить эту проблему.
2. это запись, но когда я использовал это, я получал следующие ошибки. Метод HeadMethod не может быть преобразован в тип. Как мне преодолеть эту проблему. пожалуйста, ответьте..
3. @ShashiShirke, вам необходимо загрузить клиентскую библиотеку Apache commons http и включить ее в свой проект.
Ответ №3:
Было бы лучше использовать что-то вроде этого:
CloseableHttpClient client = HttpClientBuilder.create().build();
HttpHead head = new HttpHead(url);
String lastModified;
try {
CloseableHttpResponse response = client.execute(head);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
Header header = headMethod.getFirstHeader("last-modified");
lastModified = header.getValue();
}
} catch (IOException ignored) {
}