Как реализовать метод HEAD для httpclient - PullRequest
2 голосов
/ 19 октября 2011

Привет, я загружаю файл с сервера. Я должен взять мета-информацию, используя метод HEAD. andybody, помогите мне реализовать метод HEAD, чтобы получить дату "последнего изменения" и дату изменения.

вот мой код:

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());
}

//here I have to implement the HEAD method

1 Ответ

2 голосов
/ 19 октября 2011

Разница между HEAD и GET-методом заключается в том, что ответ не будет содержать тела. В остальном оба одинаковы. Другими словами, метод HEAD получает все заголовки. не используется для получения данных одного заголовка, он просто извлекает все заголовки одновременно.

В примере кода у вас уже есть все заголовки, потому что вы выполнили запрос HEAD. В цикле for вы выводите все данные из заголовков. Если last-modified отсутствует, сервер не предоставил его для этого ресурса.

Обратите внимание, что if-modified-since является полем заголовка запроса, а не полем заголовка ответа. Вы можете настроить его так, чтобы сервер возвращал ресурс только в том случае, если дата изменения изменилась. Если вы собираетесь извлекать ресурс только после того, как он был изменен на сервере, вы можете просто использовать запрос GET с установленным заголовком if-modified-since. Чтобы узнать, поддерживает ли сервер этот заголовок, проверьте этот инструмент: http://www.feedthebot.com/tools/if-modified/

...