EntityUtils 类是 Apache HttpClient 库中的一个工具类,它提供了一些静态方法来帮助处理 HttpEntity
对象。以下是 EntityUtils
类的一些常用方法和代码案例:
常用方法
-
consume(HttpEntity entity):
- 确保实体内容被完全消费,并且如果存在,内容流会被关闭。如果读取输入流时发生错误,会抛出
IOException
。
- 确保实体内容被完全消费,并且如果存在,内容流会被关闭。如果读取输入流时发生错误,会抛出
-
consumeQuietly(HttpEntity entity):
- 确保实体内容被完全消费,并且如果存在,内容流会被关闭。这个过程是“安静”的,不会抛出任何
IOException
。
- 确保实体内容被完全消费,并且如果存在,内容流会被关闭。这个过程是“安静”的,不会抛出任何
-
toByteArray(HttpEntity entity):
- 读取实体的内容,并将其作为字节数组返回。
-
toString(HttpEntity entity):
- 读取实体的内容,并将其作为字符串返回。如果实体中没有字符集,则使用 "ISO-8859-1"。
-
toString(HttpEntity entity, String defaultCharset):
- 使用提供的默认字符集将实体内容作为字符串返回,如果实体中没有找到字符集,则使用默认字符集。
代码案例
案例 1:使用 EntityUtils.toString
方法将响应实体转换为字符串。
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://example.com");
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {HttpEntity entity = response.getEntity();if (entity != null) {String result = EntityUtils.toString(entity);System.out.println(result);}
} finally {httpClient.close();
}
在这个例子中,我们创建了一个 HttpGet
对象来发送 GET 请求,然后执行请求并处理响应。我们使用 EntityUtils.toString
方法将响应实体转换为字符串,并打印出来。
案例 2:使用 EntityUtils.toByteArray
方法将响应实体转换为字节数组。
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://example.com");
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {HttpEntity entity = response.getEntity();if (entity != null) {byte[] result = EntityUtils.toByteArray(entity);// 处理字节数组}
} finally {httpClient.close();
}
在这个例子中,我们使用 EntityUtils.toByteArray
方法将响应实体转换为字节数组,这在处理二进制数据时非常有用。
这些案例展示了如何使用 EntityUtils
类来处理 HTTP 响应实体。在实际应用中,你可以根据需要选择适当的方法来处理你的响应数据。记得在处理完响应后调用 EntityUtils.consume
或 EntityUtils.consumeQuietly
方法来释放系统资源 。