- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个扩展 AFHTTPClient 的 Web 服务类 (MyAPIClient)。所有对 Web 服务器的请求都使用 postPath 方法发送,数据为 JSON 格式。 MyAPIClient 只包含一个方法:
- (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说:
Simply take the HTTPBody from a NSMutableURLRequest, compress the data, and re-set it before creating the operation using the request.
我得到了 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”,对吗?任何帮助,将不胜感激。
最佳答案
如果有人有同样的问题,这是我的解决方案(Godzippa 对我不起作用,所以我使用不同的库来编码数据):
- (id)initWithBaseURL:(NSURL *)url
{
self = [super initWithBaseURL:url];
if (!self) {
return nil;
}
[self setDefaultHeader:@"Content-Type" value:@"application/json"];
[self setDefaultHeader:@"Content-Encoding" value:@"gzip"];
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
return self;
}
-(void)postPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(AFHTTPRequestOperation *, id))success failure:(void (^)(AFHTTPRequestOperation *, NSError *))failure
{
NSData *newData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:NULL];
newData = [newData gzipDeflate];
NSMutableURLRequest *request = [self requestWithMethod:@"POST" path:path parameters:nil];
[request setHTTPBody:newData];
AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure];
[self enqueueHTTPRequestOperation:operation];
}
关于ios - AFHTTPClient 和 gzip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18064237/
您好,我正在尝试编译以下代码,但出现错误 Use of undeclered identifier AFHTTPClient: NSData* fileNameData = [fileName dat
我是 AFNetworking 的新手,运行一个简单的应用程序来了解 AFNetworking 的工作原理。我正在关注有关 MobileTuts 的教程:http://mobile.tutsplus.
我刚开始使用 AFNetworking,我正在尝试学习如何正确使用它。 我将 AFHTTPClient 子类化并创建了我自己的 MyAppClient使用正确的基本 URL。 我正在使用 HTTP P
我有一个扩展 AFHTTPClient 的 Web 服务类 (MyAPIClient)。所有对 Web 服务器的请求都使用 postPath 方法发送,数据为 JSON 格式。 MyAPIClient
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 已关闭 9 年前。 Improve
我想将 AFNetworking 用于带有一些参数的 HTTP Post 方法,并且两个值具有相同的参数。我试过了: AFHTTPClient *httpClient = [[AFHTTPClient
我正在使用 AFNetworking,我想创建一个 AFHTTPClient 的实例。此类初始值设定项需要一个 baseUrl 参数。如果我通过 "www.mysite.com",我以后如何使用具有子
我正在尝试通过 AFHTTPClient 子类访问一个复杂的 Web 服务 如果请求成功,内容将以 JSON 格式返回。如果由于某种原因失败,来自服务器的错误将以 XML 格式返回。 目前,我认为我可
我对 iOS 编程还很陌生,尤其是在网络服务方面。我正在开发一个用于学术目的的应用程序,我需要与我的服务器通信,目前使用 AFNetworking2 和 ReSTLer/php,当涉及到 GET 方法
我有以下运行良好的代码,但我需要对其进行更多控制,尤其需要在 0.9 中开始使用 Reachability 代码。 NSString *urlString = [NSString stringWith
我有一个 iOS 应用程序,它使用具有核心数据持久性的 RestKit。它从几个不同的端点加载数据,其中大部分返回完整的对象图作为嵌套的 JSON 对象。但是其中一个端点返回包含对另一个端点数据的外键
NSURL *url = [NSURL URLWithString:@"contact.php"]; AFHTTPClient *httpClient = [[AFHTTPClient alloc]
我使用 AFHTTPClient 将文件作为 AFMultipartFormData 上传到 API。AFHTTPRequestOperation-s 是在一个循环中创建的,所以我不知道它们有多少,也
抱歉,我对 http post 术语有点陌生! 我必须发布到无法更改的网络服务:格式如下: http://SomeWebAddress/JSON/GetAllFeedsRestfullyWrapped
我不知道为什么会这样。我已经通过 Podfile 在我的项目中安装了 AFNetworking。这是当前条目: pod 'AFNetworking', '~> 1.2' 但是当我打电话时: #impo
我的应用程序从使用基于表单的身份验证的网站提取数据。它需要透明地对登录页面的重定向使用react,并通过 POST 请求提供所请求的凭据。 我之前使用过 ASIHTTPREQUEST,然后检查 url
我了解如何使用 AFHTTPClient 设置默认 header ,但我只想在对某些资源执行请求时设置某些 header 。除了构建我自己的 NSURLRequest(带有正确的 header )、创
我的应用程序需要从网络获取一些图像,但我希望用户能够取消此下载(如果没有连接,或者速度太慢,或者没有)。在任何情况下,应用程序界面都不应该被“卡住”。因此,我使用 AFHTTPClient 和 enq
我有一个 HTTPClient 请求如下: NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:urlStringMain]];
我正在尝试使用 CFRunLoopRunInMode() 来避免在 [AFHTTPClient getPath:...] 完成 block 中返回。 我的代码如下: NSLog(@"start");
我是一名优秀的程序员,十分优秀!