2014-05-02 74 views
1

我使用的是版本4.3.3的Apache HttpClient API。 當我執行下面的語句時,它返回HttpResponse實例。如何知道返回哪種類型的HttpEntity

HttpResonse response = httpClient.execute(httpRequest); 

執行以下語句以獲取響應實體。

HttpEntity entity = response.getEntity(); 

這裏我想知道哪種類型的實體對象返回。例如:StringEntity,FileEntity,InputStreamEntity,...

我嘗試以下,但它返回ResponseEntityWrapper

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

有沒有辦法知道具體類型的響應實體的?

+0

首先,說服我們確實需要知道響應實體對象的類型。 –

+0

@SotiriosDelimanolis我正在爲REST調用執行寫一個低層。如果返回的響應體是StringEntity,我打算返回String。如果它是FileEntity,那麼我想要返回流。 如果我爲所有情況返回InputStream,則調用者必須編碼以解析每個用例的流。如果我解析並返回來自低層的特定響應,它將減少高層次的代碼冗餘。 – Awesome

回答

0

您不會直接從實體獲取Java對象,其內容是由其MIME類型指定的東西,您可以使用entity.getContentType().getValue()(只要指定了content-type,否則顯然會得到NullPointerException )。

內容類型是像「text/plain」或「text/html」這樣的字符串。例如,如果您獲得「application/json」內容類型,則需要使用「反序列化器」(如Gson或Jackson)和entity.getInputStream()作爲該解串器的輸入。

相關問題