java - 如何在 Java 中解压缩调用 API 响应?
问题描述
我想解压缩一个 API 响应(标题 : Accept-encoding=gzip
)。
以下是我尝试过但总是失败的线路,原因是:
java.util.zip.ZipException: Not in GZIP format
String entity = response.readEntity(String.class);
// When I print "entity" I will get Compress message as below:
��{o�ʒ��
���c^MC��������ut4"�ms���fWGگ�_o?�V�G�ę�=�PF�3��i�������ɚ���G�[�eEA����$��M�(�rW�nk��97�m�r��6�$�$T�a^ZaIj�"�5U�4�����4:oW�C{�-��A�c0�hސ�*l���JP�ƚ.������t�
}ˏ�r�kIxjk��!���m�0��Z�9 ���r[�����6!٦^fQ�X_d)hބe���m��\RP�Y��Xg�:�F�IEE�5]U��f�\jϋ�?N�ߖ�<�κ;�+��j�xQ�{����40�]4N�NOib�=o(r�mL�rLϱ�>Rۖ�l4
{2jʁk��f�*�љw��a�l���������^�V�a�ӱ���w[2�V>n��'��n���;�ȧ�#�p-ch}<>�9>�IB�~X��X���=��lz9)H��2#O?�R����*�����q�c�V�t����c�ܩ<��A��[���4
��
byte[] input = entity.getBytes();
// helper method
public static String decompress(byte[] compressed) throws IOException {
ByteArrayInputStream bis = new ByteArrayInputStream(compressed);
// Always failed at "GZIPInputStream" line due to java.util.zip.ZipException: Not in GZIP format
GZIPInputStream gis = new GZIPInputStream(bis);
BufferedReader br = new BufferedReader(new InputStreamReader(gis, "UTF-8"));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
gis.close();
bis.close();
return sb.toString();
}
解决方案
推荐阅读
- c# - Entity Framework Core 3 - 执行左外连接
- python - 如何使用 arm 模板部署 python azure 函数?
- excel - 根据列值将 Excel 工作表拆分到另一个空工作簿上
- verilog - 在case语句系统verilog中生成块
- sql - 存储函数值
- javascript - 如何解析从webapi返回的json日期时间以使用ajax以yyyy/mm/dd格式在前端打印
- datetime - Dynamics CRM 365 本地统一界面 webresource 从表单中读取日期字段以 UTC 获取日期
- python - 第三个括号内的双冒号 [::] 是什么意思?
- sql - 在 vertica 中编写 udf 的最佳方法,我需要从其中一个费率表中引用数据并在顶部写一个公式
- linux - 如何在 shell 脚本中使用命令输出作为 grep 的输入