2014-05-02 5 views
1

Я использую API Apache HttpClient версии 4.3.3. Когда я выполняю следующий оператор, он возвращает экземпляр HttpResponse.Как узнать, какой тип HttpEntity возвращен

HttpResonse response = httpClient.execute(httpRequest); 

Выполнено следующее заявление, чтобы получить объект ответа.

HttpEntity entity = response.getEntity(); 

Здесь я хочу узнать, какой тип объекта объекта был возвращен. Например: StringEntity, FileEntity, InputStreamEntity ...

Я попытался следующие, но она возвращает ResponseEntityWrapper

String className = entity.getClass().getName(); 

Есть ли способ узнать конкретный тип объекта ответа?

+0

Прежде всего, убедите нас, что вам действительно нужно знать тип объекта объекта ответа. –

+0

@SotiriosDelimanolis Я пишу слой низкого уровня для выполнения вызова REST. Я планирую вернуть String, если тело возвращаемого ответа - StringEntity. Если это FileEntity, я хочу вернуть Stream. Если я возвращаю InputStream для всех случаев, то вызывающие должны кодировать поток синтаксического анализа для каждого варианта использования. Если я проанализирую и возвращу определенный ответ с уровня низкого уровня, это уменьшит избыточность кода на уровнях высокого уровня. – Awesome

ответ

0

Вы не получите объект Java прямо из объекта, его содержимое скорее всего задается типом mime, который вы можете получить с помощью entity.getContentType().getValue() (если указан тип содержимого, в противном случае вы, очевидно, получите исключение NullPointerException).

Тип содержимого представляет собой строку типа "text/plain" или "text/html". Например, если вы получаете тип контента «application/json», вам нужно использовать «десериализатор» (например, Gson или Jackson) и entity.getInputStream() в качестве входа для этого десериализатора.

Смежные вопросы