Я использую AFNetworking для загрузки файла .gzip, который, когда несжатый должен возвращать строку JSON. Я сделал запрос на получение через мой браузер, загрузился файл .gzip, и при распаковке извлекается соответствующий JSON.AFNetworking не может сериализовать gzip-ответ (объект ответа равен нулю)
Я знаю, что AFNetworking построена на NSURLConnection, и из того, что я прочитал, NSURLConnection имеет встроенный в нее инфляцию gzip. Однако я не могу распаковать и разобрать файл 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, объект ответа не равен нулю. Однако это класс _NSInlineData, который является недокументированным классом.
У меня такая же проблема. Будет опубликовать что-нибудь, если я найду решение. –