gpt4 book ai didi

ios - AFNetworking 无法序列化压缩响应(响应对象为零)

转载 作者:行者123 更新时间:2023-11-29 12:21:40 26 4
gpt4 key购买 nike

我正在使用 AFNetworking 下载一个 .gzip 文件,解压后应该返回一个 JSON 字符串。我已经通过我的浏览器发出了获取请求,下载了 .gzip 文件并在解压缩后检索到相应的 JSON。

我知道 AFNetworking 是建立在 NSURLConnection 之上的,据我所知,NSURLConnection 内置了 gzip inflation。但是,我无法将服务器返回的 gzip 文件解压缩并解析为 JSON。来自 AFNetworking 的响应对象保持为零。我的代码如下:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/plain", @"application/x-gzip", nil];


[manager GET:[NSString stringWithFormat:@"%@%@", BASE_URL, GET_CONTENTS_URL] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
if(responseObject == nil){
NSLog(@"Response is still nil");
}
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];

我不确定为什么这不起作用。

注意 1:但是,如果我将响应序列化程序替换为 AFHTTPResponse 序列化程序,则响应对象不是 nil。但是,它属于 _NSInlineData 类,这是一个未记录的类。

最佳答案

我遇到了同样的问题,最后我在 AFgzipRequestSerializer 的帮助下开始工作。

您需要使用“AFgzipRequestSerializer”。

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFgzipRequestSerializer serializerWithSerializer:[AFJSONRequestSerializer serializer]];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

manager.responseSerializer = [AFHTTPResponseSerializer 序列化器];

关于ios - AFNetworking 无法序列化压缩响应(响应对象为零),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30453422/

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