首页 > 解决方案 > 如何在 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ϱ�&gt;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�ܩ&lt;��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();
    }

标签: javastringapigzipresponse

解决方案


推荐阅读