Как узнать, что содержимое HttpResponse является строкой или потоком

1

Я использую API Apache HttpClient 4.3.3.

HttpResponse response = client.execute(request);

Некоторые запросы будут отправлены в ответ. Некоторые запросы используются для загрузки файлов с сервера, что означает, что клиент может записать это содержимое в файл.

Как отличить ответ выше двух типов запросов с использованием HttpResponse.

HttpEntity entity = response.getEntity();

Я думал, что " entity.isStreaming() " работает для моего использования. Но он возвращается для меня во всех запросах.

Теги:
httpclient
apache-httpclient-4.x
apache-httpcomponents

2 ответа

0

HttpClient ответа всегда передают потоки (если только использование кеша HttpClient поддерживается). Объекты запроса могут быть либо потоковыми (поддерживаемыми неповторяемым InputStream), либо не потоковыми (с поддержкой массива String, byte, File или аналогичного объекта или связанной с ним файловой системы)

0

Я думаю, что при обычном использовании разница в потоке v без потока инкапсулируется в "entityutils.entity.consume", который вы видите ниже. Код от "CloseableHttpClient" в шаблоне использования от POST.

 CloseableHttpClient...

public <T> T execute(final HttpHost target, final HttpRequest request,
        final ResponseHandler<? extends T> responseHandler, final HttpContext context)
        throws IOException, ClientProtocolException {
    Args.notNull(responseHandler, "Response handler");

    final HttpResponse response = execute(target, request, context);

    final T result;
    try {
        result = responseHandler.handleResponse(response);
    } catch (final Exception t) {
        final HttpEntity entity = response.getEntity();
        try {
            EntityUtils.consume(entity);
        } catch (final Exception t2) {
            // Log this exception. The original exception is more
            // important and will be thrown to the caller.
            this.log.warn("Error consuming content after an exception.", t2);
        }
        if (t instanceof RuntimeException) {
            throw (RuntimeException) t;
        }
        if (t instanceof IOException) {
            throw (IOException) t;
        }
        throw new UndeclaredThrowableException(t);
    }

    // Handling the response was successful. Ensure that the content has
    // been fully consumed.
    final HttpEntity entity = response.getEntity();
    EntityUtils.consume(entity);
    return result;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню