HTTP Get: только скачать заголовок? (HEAD не поддерживается) - PullRequest
9 голосов
/ 13 января 2012

В моем коде я использую Http Get-запрос для загрузки некоторых файлов в виде потока.Я использую следующий код:

public String getClassName(String url) throws ClientProtocolException, IOException {
        HttpResponse response = sendGetRequestJsonText(url);

        Header[] all = response.getAllHeaders();
        for (Header h : all) {
            System.out.println(h.getName() + ": " + h.getValue());
        }

        Header[] headers = response.getHeaders("Content-Disposition");
        InputStreamParser.convertStreamToString(response.getEntity().getContent());
        String result = "";
        for (Header header : headers) {
            result = header.getValue();
        }
        return result.substring(result.indexOf("''") + "''".length(), result.length()).trim();
    }

Но при этом загружается полное содержание ответа.Я хочу получить только заголовки http без содержимого.Запрос HEAD, кажется, не работает, потому что тогда я получаю статус 501, не реализованный.Как я могу это сделать?

Ответы [ 2 ]

18 голосов
/ 13 января 2012

Вместо того, чтобы делать запрос GET, вы можете рассмотреть возможность сделать запрос HEAD :

Метод HEAD идентичен GET за исключением того, что сервер НЕ ДОЛЖЕН возвращать сообщениев ответе.Метаинформация, содержащаяся в заголовках HTTP в ответ на запрос HEAD, ДОЛЖНА быть идентична информации, отправленной в ответ на запрос GET.Этот метод может использоваться для получения метаинформации о сущности, подразумеваемой запросом, без передачи самого тела сущности.Этот метод часто используется для проверки гипертекстовых ссылок на валидность, доступность и последние изменения.

6 голосов
/ 13 января 2012

Возможно, вы сможете использовать Range заголовок в своем запросе, чтобы указать диапазон байтов для включения в объект ответа. Возможно что-то вроде:

Range: bytes=0-0

Если это работает, вы должны получить обратно 206 Partial Content с байтами, указанными в заголовке Range, присутствующем в объекте ответа. Тем не менее, я не пробовал это, и это также не гарантировано для работы:

Сервер МОЖЕТ игнорировать заголовок Range.

...