V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
satanwoo
V2EX  ›  程序员

抓到的 HTTP Response 是一串字符串,看到的 content-encoding:gzip,反解码不成功是啥原因?

  •  
  •   satanwoo · 2014-07-25 23:32:38 +08:00 · 4758 次点击
    这是一个创建于 3781 天前的主题,其中的信息可能已经有所发展或是发生改变。
    昨天抓包,看到reponse是一串字符串,然后查了下header 里面包含了gzip encoding,但是用了一些gzip decompress tool怎么解析失败,是啥原因。

    失败的原因不是说解析出来看不懂,而是直接报了invalid,请问各位大大这是啥原因。
    18 条回复    2014-07-30 12:05:18 +08:00
    dbfox
        1
    dbfox  
       2014-07-26 00:41:47 +08:00 via iPhone
    satanwoo
        2
    satanwoo  
    OP
       2014-07-26 01:09:32 +08:00
    @dbfox Charles这个抓包软件输出的reponse应该是最后完整收到的。所以应该还是得到把所有块当成字符串流全部拼在一起后的效果吧?这样的话好像不应有影响呀~
    cj1324
        3
    cj1324  
       2014-07-26 10:09:05 +08:00 via Android
    也有可能收到数据太多了。 需要截断。
    satanwoo
        4
    satanwoo  
    OP
       2014-07-26 12:08:51 +08:00
    @cj1324 单独一个API查询返回的repsonse也需要截断吗?
    julyclyde
        5
    julyclyde  
       2014-07-26 22:09:02 +08:00
    @satanwoo 服务器那边想怎么输出都可以,只要符合标准。至于你说的“单独一个API”那是更上层的事情了,和协议无关
    satanwoo
        6
    satanwoo  
    OP
       2014-07-26 22:33:56 +08:00
    @julyclyde 我的意思,我抓的数据显示相当于一次完整传输的最终结果~就类似于服务器断断续续传,我在这边最终收集好了显示出来,这就是服务器通过这是传输发给我的所有东西吧,对不?那我现在想反解码这个完整的数据为啥不行呀~
    iannil
        7
    iannil  
       2014-07-27 01:28:07 +08:00
    应该是使用了gzip压缩,返回的response需要解压一下。
    satanwoo
        8
    satanwoo  
    OP
       2014-07-27 11:23:17 +08:00
    @iannil 我就是用了gzip工具包反解压不成功嘛~
    iannil
        9
    iannil  
       2014-07-27 13:13:13 +08:00
    @satanwoo 什么语言?什么方法解压的?
    satanwoo
        10
    satanwoo  
    OP
       2014-07-27 14:13:50 +08:00
    @iannil 在线工具包之类的呀~
    msg7086
        11
    msg7086  
       2014-07-27 18:17:37 +08:00
    @satanwoo 我猜测你用的在线工具可能只吃gzip文件而不吃gzip流。
    satanwoo
        12
    satanwoo  
    OP
       2014-07-27 18:54:15 +08:00
    @msg7086 他支持direct input哎~
    iannil
        13
    iannil  
       2014-07-27 21:21:37 +08:00
    @satanwoo 别用在线工具包,最好用标准化的工具来进行解压
    julyclyde
        14
    julyclyde  
       2014-07-28 17:27:14 +08:00
    @satanwoo 你先看一下HTTP响应里是不是写了Transfer-encoding:trunked这样的
    satanwoo
        15
    satanwoo  
    OP
       2014-07-28 20:50:36 +08:00
    @julyclyde 是的~
    julyclyde
        16
    julyclyde  
       2014-07-29 15:40:56 +08:00
    @satanwoo trunked每段开头有一行16进制数字,表示后面的内容的字节数。然后从下一行开始是内容。每段分别解压缩应该可以
    satanwoo
        17
    satanwoo  
    OP
       2014-07-29 19:35:07 +08:00
    @julyclyde 恩,你的回复我了解哈~但是我不是直接侦听网络数据块,我是用的charles,这个软件可以直接按照正确的方式~拼接收到的这种trunk的数据,所以我也不太理解。
    julyclyde
        18
    julyclyde  
       2014-07-30 12:05:18 +08:00
    @satanwoo 如果真的正确拼接了自然是能解压缩的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2732 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 09:13 · PVG 17:13 · LAX 01:13 · JFK 04:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.