gpt4 book ai didi

iphone - 解压缩zlib编码的nsdata

转载 作者:行者123 更新时间:2023-12-01 18:31:22 25 4
gpt4 key购买 nike

我正在尝试解压缩一些我使用ASIHTTPRequest包装器下载的zlib编码数据。

到目前为止,这就是我所拥有的..几乎只是获取数据,现在我希望能有一些帮助来启动减压过程。

- (IBAction)sendHttpsRequest
{

//Set request address
NSMutableString *databaseURL = [[NSMutableString alloc] initWithString:@"https://192.168.17.36:443"];

//call ASIHTTP delegates (Used to connect to database)
NSURL *url = [NSURL URLWithString:databaseURL];

//This sets up all other request
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

[request setDelegate:self];
[request setValidatesSecureCertificate:NO];
[request setPostValue:@"ClientDataSet.xml" forKey:@"filename"];
[request startSynchronous];
}

- (void)requestFinished:(ASIHTTPRequest *)request
{

responseData = [request responseData]; //Pass requested data from server over to NSData variable..

//Is this where I have to think about decompression? or do I pass this data out to another method?
}

- (void)requestFailed:(ASIHTTPRequest *)request
{
self.hudCheck = NO;
[NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(stopAnimating) userInfo:nil repeats:NO];

NSError *error = [request error];
NSLog(@"%@", error);
}

至此,我几乎已经进入解压缩阶段,但是我不确定我需要使用哪些函数/方法来解压缩该数据。我只用gzip尝试过,这相对容易,因为ASI包装程序可以处理所有内容。

但是由于无法控制的情况,我现在获取的数据是zlib编码的。因此,您可以告诉我的任何函数,方法或示例都将有助于我的事业,将不胜感激。

编辑:

从我添加的@Caleb响应前进
在我的文件中包括“zlib.h”,现在可以访问此框架方法。其中之一是inflate()方法。但是我不确定需要在其中输入哪些参数?有任何想法吗?。

最佳答案

您是否在zlib网站上浏览了the exampleinflateInit()inflate()inflateEnd()看起来(几乎)满足您的所有需求。

您将希望在-requestFinished:方法中应用该示例中的 class 。换句话说,您将首先下载所有压缩数据,然后才尝试对其进行解压缩。下载时可能可以解压缩,但是如果没有更多帮助,它将变得更加复杂。

更新:要回答您的后续问题,您需要传递到inflate()中的两个参数是z_stream(您之前已使用inflateInit()对其进行了初始化)和flush选项。该示例使用Z_NO_FLUSH -您必须阅读一点才能找出其他可能的选择。

我的建议是从示例中获取inf()函数,减去所有散布的解释性文本,然后将其粘贴到您的代码中。接下来,将其转换为从您的NSData中读取并写入NSMutableData中,可能使用NSInputStream和NSOutputStream,如下面我的评论中所建议。那应该给您一个函数,可以将包含压缩数据的NSData传递给该函数,并且该函数将返回包含未压缩数据的NSMutableData。

关于iphone - 解压缩zlib编码的nsdata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8438315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com