1
我有一個擴展AFHTTPClient的Web服務類(MyAPIClient)。所有對Web服務器的請求都使用postPath方法發送,並且數據採用JSON格式。 MyAPIClient只包含一種方法:AFHTTPClient和gzip
- (id)initWithBaseURL:(NSURL *)url
{
self = [super initWithBaseURL:url];
if (!self) {
return nil;
}
[self setDefaultHeader:@"Accept" value:@"application/json"];
[self setParameterEncoding:AFJSONParameterEncoding];
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
return self;
}
現在我想添加gzip編碼。作爲FAQ說:使用請求創建操作之前
乾脆把HTTPBody從NSMutableURLRequest,壓縮 數據,並重新設置。
我得到了Godzippa庫,所以我可以壓縮數據。接下來,我想我需要重寫postPath方法,像這樣:
-(void)postPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(AFHTTPRequestOperation *, id))success failure:(void (^)(AFHTTPRequestOperation *, NSError *))failure
{
NSMutableURLRequest *request = [self requestWithMethod:@"POST" path:path parameters:parameters];
NSData *newData = [[request HTTPBody] dataByGZipCompressingWithError:nil];
[request setHTTPBody:newData];
[self setDefaultHeader:@"Content-Type" value:@"application/gzip"];
AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure];
[self enqueueHTTPRequestOperation:operation];
}
我相信這不是做它作爲AFHTTPClient需要NSDictionary中轉換成JSON只有這樣我可以在gzip的編碼和正確的方式設置正確的「Content-Type」,對吧?任何幫助,將不勝感激。