php gzip base64,从API读取数据,并使用以base64和gzip编码的Python

我尝试为我们的学生时间表/时间表编写自己的API。已经有一个用PHP(GitHub)编写的API,但是我想使用Python。

现在,我正在尝试读取从原始API获得的数据。这是响应:

{

"d":

"H4sIAAAAAAAEAO1XzW6bQBC+V+o7IM5Z82PMj29RqkiRkiiKo/ZQVdUuOxgUzFpmaVpFeZs+Rm95sS5egwEDwY7bQ9o9GGtm5+8bdj728f07RVFvIc1i7jMK6lTRTyqyGcc8Sy+SgAmNqkqVEK74RULhuxAio7r/CpLsgsMiFZrPuVxRHuVDbClMZAQp8llyGSX3W+9r8V3E4zwXYRLimENFdRZGMa24r4WohTFO6uJKqJDzZTrVNLxcjmhKhIavWDyioKWi4MjXcEJXLKKR0KTaXRRDOlomc7XusczyNEvD55/JHBobbhnjQl9LL8+E1svdiD9gDq2KMs6uCXAcxe1GeJ62Ks5YcvdjCbU+bFQ3q4i1yXcb19MMuR6bgrJuYk5cV7dMZLoBRZbleMizTA854BN94ltkEljNpGv4GNZI90ambjiKMZ5OjNbNJWbXpqV8As5hpdzCPGIJjtu9d0LZC2cDUrNN3QGrxKQDWum3E958tUAsXb4KZgnGHlBLePaEW0YpIS/Oo4/9EMzGkTzPj59mbBZq+SmWNqRo7QEwD2E1CvmiO7e+fsvelD23u7b09F02qqf3MkbZ/y/dMeBbBA95qp5nG/okIEi0a4ws3yOieNtHAXXG2DbAcYk/DKGldLoeeW1xn3aFbQlWk9vx0/DRtO+0faqP2C6I1CvgIaPXeLF+LXn+DjWm8zU8nLEs4TsdUGf4G1zidM1+uTlfZbDdUM2gnXka7l7DPAtxRkgMfexzEwvu+U895eqmngDA0l1qIpdQcUJsMkbuBBso8Meu7YFBiUMHU481Ne1+6vl4o8z88PlXLIbhgpHo3yCeQ0GWYOwBtISnADvNSMq/6rqRz/U9KGf3IFLMsTZomA4pVRuW2Fvlm0EQvUW+2QzuY3FO8XcbtRGxckVqDdIToChx96a2vUK9eFObCb7i0bzKsnvc1Y7GmOcAlGD/vo8wiz3qQa0N2q2HdzbAcbrX58TRLrKnhGW8D5n1Rf8gVHDu+u9BYh4Lkks2fwETueMwVOI228Nh+aNDIH9Ix6I6nCQQ177V1CuBG064JHlMLOJZgFEwcQNkYcdAroXHyPB8B9u6bTtjT4zRp98HcP/bYBIAAA=="

}

在PHP文件中,其解码方式如下:

// parse json

$response = json_decode($response)->d;

// decode Base64

$response = base64_decode($response);

// decode gzip

$response = gzdecode($response);

我尝试用Python做同样的事情:

# Read JSON

data = r.json()["d"]

# Decode Base64

data_base64 = base64.b64decode(data)

# Decode GZIP

data_uncompressed = zlib.decompress(data_base64)

# Decode JSON

data_json = json.loads(data_uncompressed)

不幸的是,我在解码GZIP时遇到错误:

data_uncompressed = zlib.decompress(data_base64)

zlib.error: Error -3 while decompressing data: incorrect header check

谁知道,什么原因导致错误?提前谢谢你的帮助!

解决方案

减压错误。您要使用gzip.decompress()完整的gzip数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值