出现异常的代码块如下:
CloseableHttpClient httpClient = getHttpClient();
// 调用HttpClient发送Http请求,并对响应进行处理,转换成字节数组
HttpResponse response;
response = httpClient.execute(method);
byte[] bytes = EntityUtils.toByteArray(response.getEntity());----出现异常的行。
异常翻译:Premature end of chunk coded message body: closing chunk expected
翻译如下:过早的关闭通过块编码的消息体:关闭块异常。
关键点在于http传输协议1.0与1.1的区别,1.1协议的内容是分块传输,response获得实体事懒加载,一块一块的获取,但是这个EntityUtils工具类的.toByteArray方法实现如下:
public static byte[] toByteArray(final HttpEntity entity) throws IOException {
Args.notNull(entity, "Entity");
final InputStream instream = entity.getContent();
if (instream == null) {

本文介绍了在使用HttpClient时遇到的'Premature end of chunk coded message body: closing chunk expected'异常。问题源于HTTP 1.1协议的分块传输,而EntityUtils.toByteArray()方法在读取内容时提前关闭了流。解决方案是将HTTP协议版本设置为1.0,确保消息体一次性完整传输。参考链接提供了更多相关信息。
最低0.47元/天 解锁文章
2万+





