解压GZIP加密后的Response

         今儿同事调接口时,发现对方返回的HttpResponse是经GZIP加密的,调用一个现成的解压Util总是失败。经查阅资料,个人封装了一个自带解压功能的post方法,适用于返回结果经GZIP加密的post请求,Get请求请自行更改。废话少说,上代码。

private String postGZIP(String url, String requestJson, String authorization)throws Exception {
        HttpClient httpClient = HttpClients.createDefault();
        HttpPost httppost =null;
        String postUrl =null;
        HttpResponse response =null;
        String json =null;
        try{
            postUrl = url +"?param="+ requestJson;
            httppost =new HttpPost(postUrl);
            List<NameValuePair> params =new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("param", requestJson));
            // httppost.setEntity(new UrlEncodedFormEntity(params));
            httppost.addHeader("Content-Type","text/plain;charset=utf-8");
            // httppost.addHeader("Accept-Encoding", "gzip");
            if(null!= authorization){
                httppost.addHeader("Authorization", authorization);
            }
            response = httpClient.execute(httppost);
            InputStream is = response.getEntity().getContent();
            is =new GZIPInputStream(is);
            BufferedReader br =new BufferedReader(new InputStreamReader(is));
            String line =null;
            StringBuffer sb =new StringBuffer();
            while((line = br.readLine())!=null){
                sb.append(line);
            }
            json = sb.toString();
        }catch(Exception e){
            throw e;
        }finally{
            if(null!= httppost){
                httppost.releaseConnection();
            }
        }
        if(json ==null){
            thrownew Exception("接口无结果返回");
        }
        return json;
    }

测试方法:

@Test
    public void testGZIP()throws Exception {
        String url ="http://api.pkfare.com/test_api/shopping";
        String req ="JTdCJTIyYXV0aGVudGljYXRpb24lMjIlM0ElN0IlMjJwYXJ0bmVySWQlMjIlM0ElMjJSa3NWU1g3UGZabTF5RjA0YWRCV1lzQ0Q3TTQlM0QlMjIlMkMlMjJzaWduJTIyJTNBJTIyMTdlNzA3YjVkOWRhZTg0NTkwNjVkYmIxMzllNWYxYmQlMjIlN0QlMkMlMjJzZWFyY2glMjIlM0ElN0IlMjJhZHVsdHMlMjIlM0ExJTJDJTIyYWlybGluZSUyMiUzQSUyMkNBJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0EwJTJDJTIyaW5mYW50cyUyMiUzQTAlMkMlMjJub25zdG9wJTIyJTNBMSUyQyUyMnNlYXJjaEFpckxlZ3MlMjIlM0ElNUIlN0IlMjJjYWJpbkNsYXNzJTIyJTNBJTIyRWNvbm9teSUyMiUyQyUyMmRlcGFydHVyZURhdGUlMjIlM0ElMjIyMDE2LTAzLTE2JTIyJTJDJTIyZGVzdGluYXRpb24lMjIlM0ElMjJIS0clMjIlMkMlMjJvcmlnaW4lMjIlM0ElMjJCS0slMjIlN0QlNUQlMkMlMjJzb2x1dGlvbnMlMjIlM0EyMCU3RCU3RA==";
        System.out.println(pkfareBusiness.postGZIP(url, req, null));
    }
时间: 2024-07-28 17:03:16

解压GZIP加密后的Response的相关文章

chunked-httpclient 解压 gzip问题 求大神解答

问题描述 httpclient 解压 gzip问题 求大神解答 httpclient 在获取response 时 格式 是 gzip 的 而且还是Transfer-Encoding:chunked这个标签指定了 一直没法获取到相应信息 不是 解压 失败就是不能解压,有没有知道的解答下 解决方案 Transfer-Encoding:chunked先检查下传输有没有问题. 解决方案二: 用fiddler调试.

mysql-最新版本的MySQL解压并且配置后发现没有默认的root用户,怎么办?

问题描述 最新版本的MySQL解压并且配置后发现没有默认的root用户,怎么办? Win7 64位,解压出来的MySQL,网上说的停止服务跳过验证创建用户根本没用,都是过时的操作方法.就没有32位系统那样的安装包么,安装之后直接有默认的root用户 解决方案 应该有,但你说的那种版本应该已经被淘汰了 解决方案二: 我也在学习MYSQL,前些天下载了一个,在网上找了好久,可以用,我已经放到群文件里了,Java学习与交流,q群号码:184998348,或者告诉我邮箱发给你也可以.

Python实现压缩与解压gzip大文件的方法_python

本文实例讲述了Python实现压缩与解压gzip大文件的方法.分享给大家供大家参考,具体如下: #encoding=utf-8 #author: walker #date: 2015-10-26 #summary: 测试gzip压缩/解压文件 import gzip BufSize = 1024*8 def gZipFile(src, dst): fin = open(src, 'rb') fout = gzip.open(dst, 'wb') in2out(fin, fout) def gun

请问,如何利用ICSharpCode.SharpZipLib将SQLSERVER image数据字段中的压缩文件取出来解压 GZIP

问题描述 如题! 解决方案 解决方案二:先还原成一个.zip的文件,然后再对.zip的文件解压~解决方案三:读取数据库还原为zip文件,放到临时目录里面,再解压.解决方案四:gz

gizp-delphi7 如何解压java 压缩的 gzip字符串?我这里总提示data error

问题描述 delphi7 如何解压java 压缩的 gzip字符串?我这里总提示data error 5C 如题,哪位大神知道如何解压gzip字符串?初学delphi 求指导. 解决方案 雇佣一个程序员给你写一个解压缩的控件,你负责拖一个到你的窗口上. 解决方案二: 先试一下用winrar如果能正确解压的话,在delphi里用zlib库来解压

zlib http-使用zlib库解压http数据时遇到的问题

问题描述 使用zlib库解压http数据时遇到的问题 最近在用c++写一个爬虫程序,遇到一个问题,不能解压服务器返回的压缩数据,解压数据的函数是在网上看的,如下: bool GzipDecompress(Byte *source, uLong source_length, Byte *dest, uLong *dest_length) { int err = 0; z_stream d_stream = {0}; static char dummy_head[2] = { 0x8 + 0x7 *

Mac上zip文件解压出cpgz格式的文件该怎么办?

  Mac上zip文件解压出cpgz格式的文件该怎么办? 问题原因: 首先,我们分析导致这种情况的原因有以下几点: 1.zip文件已经损坏; 2.zip文件下载时没有下载完全; 3.浏览器在下载或者下载完成zip文件时,对其进行了错误处理; 4.bug导致. 校验文件: 解决这个zip-cpgz循环有多种方法,首先你可以验证一下你的zip文件md5 hash或者SHA1(这些数据一般可以在你下载的网页上边扎到),如果校验显示不同,说明你的文件有损坏或者下载不完全. 1.校验MD5 hash方法:

百度云非会员怎么解压

  什么百度云不能解压500m以上的文件 支持会员在个人网盘内查看最大2G的压缩包,下载或解压包内200M的文件.(普通用户为查看500M压缩文件,解压或下载包内50M文件) 百度云要会员才能解压文件怎么办 1.点击打开手机上的百度云软件 2.然后,选择你需要解压的压缩包文件,并用手指长时间点击不放,系统自动出现选择指示. 3.接下来,我们在需要解压的文件后点击选中,并点击下方下载. 4.然后,我们点击进入传输列表里查看文件下载情况. 5.最后,文件下载后,就可以用手机自带解压软件解压,不需要开

Mac上zip文件解压出cpgz怎么办?

问题原因: 首先,我们分析导致这种情况的原因有以下几点: 1.zip文件已经损坏; 2.zip文件下载时没有下载完全; 3.浏览器在下载或者下载完成zip文件时,对其进行了错误处理; 4.bug导致. 校验文件: 解决这个zip-cpgz循环有多种方法,首先你可以验证一下你的zip文件md5 hash或者SHA1(这些数据一般可以在你下载的网页上边扎到),如果校验显示不同,说明你的文件有损坏或者下载不完全. 1.校验MD5 hash方法:打开终端,输入MD5,空格,然后输入需要验证的文件路径(可