как использовать метод HEAD HttpClient для получения всех заголовков

#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:

Из документации HttpClient

 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) {
}