從我所有讀過的gzip壓縮響應數據應該由NS URL加載系統自動解壓縮。我正在使用AFNetworking和AFJSONResponseSerializer處理對自定義後端的請求。我已經嘗試將"Accept-Encoding" = gzip
添加到我的請求標題中,但它沒有效果。我的響應頭包括:自動解壓縮json響應數據不起作用
"Content-Encoding" = gzip;
"Content-Length" = 179837;
"Content-Type" = "application/json";
我提出的要求是這樣的:
[[AFHTTPRequestOperationManager sharedClient]
GET:@"some/endpoint"
parameters:@{@"foo":@"bar"}
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Response data size %u", operation.responseData.length);
NSURL *outputURL = [[APP_DELEGATE applicationDocumentsDirectory] URLByAppendingPathComponent:@"data.gzip"];
[operation.responseData writeToURL:outputURL atomically:NO];
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"ERROR [%d] [%@]", error.code, error.localizedDescription);
}];
當這個運行的operation.responseData.length
打印尺寸爲我所期望的。但是,responseObject
應該是NSArray時爲零。我添加了編寫operation.responseData
的行來測試收到的數據是我所期望的。我可以瀏覽到data.gzip,解壓縮並查看我的JSON。
在我看來,在我的AFJSONResponseSerializer嘗試處理它之前,收到的壓縮數據沒有被自動解壓縮。我在Stackoverflow上找到的大部分內容都討論瞭解壓縮是自動還是建議添加一個"Accept-Encoding" = gzip
標頭。任何建議,將不勝感激。