Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何知道返回了哪种类型的HttpEntity_Java_Apache_Http_Httpclient_Apache Httpclient 4.x - Fatal编程技术网

Java 如何知道返回了哪种类型的HttpEntity

Java 如何知道返回了哪种类型的HttpEntity,java,apache,http,httpclient,apache-httpclient-4.x,Java,Apache,Http,Httpclient,Apache Httpclient 4.x,我正在使用4.3.3版的Apache HttpClient API。 当我执行以下语句时,它返回HttpResponse实例 HttpResonse response = httpClient.execute(httpRequest); 执行以下语句以获取响应实体 HttpEntity entity = response.getEntity(); 这里我想知道返回的是哪种类型的实体对象。例如:StringEntity、FileEntity、InputStreamEntity 我尝试了以下操作

我正在使用4.3.3版的Apache HttpClient API。 当我执行以下语句时,它返回HttpResponse实例

HttpResonse response = httpClient.execute(httpRequest);
执行以下语句以获取响应实体

HttpEntity entity = response.getEntity();
这里我想知道返回的是哪种类型的实体对象。例如:StringEntity、FileEntity、InputStreamEntity

我尝试了以下操作,但它返回ResponseEntityRapper

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

有没有办法知道响应实体的具体类型?

您不会直接从实体获得Java对象,它的内容是由它的mime类型指定的,您可以通过
实体.getContentType().getValue()获得它(只要指定了内容类型,否则显然会得到NullPointerException)


内容类型是类似“text/plain”或“text/html”的字符串。例如,如果您获得“application/json”内容类型,则需要使用“反序列化器”(如Gson或Jackson)和
entity.getInputStream()
作为反序列化程序的输入。

首先,请说服我们您确实需要知道响应实体对象的类型。@SotiriosDelimanolis我正在为REST调用执行编写一个低级层。如果返回的响应主体是StringEntity,我计划返回字符串。如果是FileEntity,则我需要返回流。如果我返回所有情况下的InputStream则调用者必须为解析每个用例的流编写代码。如果我解析并返回来自低级层的特定响应,将减少高级层的代码冗余。