Я пытаюсь выполнить распаковку ответа из веб-запроса с использованием запросов Python и zlib, но я не могу правильно разложить содержимое ответа. Вот мой код:Декомпрессия Ответ на запрос Python с zlib
import requests
import zlib
URL = "http://" #omitted real url
r = requests.get(URL)
print r.content
data = zlib.decompress(r.content, lib.MAX_WBITS)
print data
Однако, я все время получаю различные ошибки при изменении параметра wbits.
zlib.error: Error -3 while decompressing data: incorrect header check
zlib.error: Error -3 while decompressing data: invalid stored block lengths
Я попытался параметры wbits для выкачать, ZLIP и Gzip, как отмечено здесь zlib.error: Error -3 while decompressing: incorrect header check
Но до сих пор не могу передать эти ошибки. Я пытаюсь это в Python, я получил этот кусок кода, который сделал это с Objective-C, но я не знаю, Objective-C
#import "GTMNSData+zlib.h"
+ (NSData*) uncompress: (NSData*) data
{
Byte *bytes= (Byte*)[data bytes];
NSInteger length=[data length];
NSMutableData* retdata=[[NSMutableData alloc] initWithCapacity:length*3.5];
NSInteger bSize=0;
NSInteger offSet=0;
while (true) {
offSet+=bSize;
if (offSet>=length) {
break;
}
bSize=bytes[offSet];
bSize+=(bytes[offSet+1]<<8);
bSize+=(bytes[offSet+2]<<16);
bSize+=(bytes[offSet+3]<<24);
offSet+=4;
if ((bSize==0)||(bSize+offSet>length)) {
LogError(@"Invalid");
return data;
}
[retdata appendData:[NSData gtm_dataByInflatingBytes: bytes+offSet length:bSize]];
}
return retdata;
}
Содержимое не один поток Zlib а ряд из них каждый с префиксом 4 байт немного endian длина. Возможно, я мог бы написать декодер. –