AFNetworking JSONSerializer与HTTPSerializer
问题描述:
我正在使用AFNetworking 2.0,并有一个AFHTTPRequestOperationManager
子类HTTPClient
处理我的应用程序中的所有HTTP流量。AFNetworking JSONSerializer与HTTPSerializer
我已将HTTPClient
的requestSerializer
属性设置为[AFJSONRequestSerializer serializer]
,它应该将参数编码为JSON并将其放入请求正文中。
这就是所有的工作,但一些请求要求我的参数直接编码在他们的URL而不是默认的JSON格式。 我想过在自定义AFHTTPRequestOperation
上设置requestSerializer
属性,但该类没有此类属性。
TL; DR:有没有一种方法可以为每个HTTP请求设置requestSerializer属性?
答
AFHTTPRequestOperation
没有requestSerializer
请求。我认为这种混淆是因为你错误地考虑了对象创建的顺序。
这里的,如果你使用的经理会发生什么:
- 经理具有请求串行
- 请求串行器用于创建NSMutableURLRequest
- 经理创建一个
AFHTTPRequestOperation
并指定此请求它。
所以,如果你想用不同的请求串行提出请求,这很简单:
/* 1. Make a NSMutableURLRequest using your own serializer */
NSMutableURLRequest *request = [myDifferentRequestSerializer requestWithMethod:@"GET" URLString:@"http://www.aol.com" parameters:parameters error:nil];
/* 2. Create an AFHTTPRequestOperation and assign this request to it. */
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperationManager sharedManager] HTTPRequestOperationWithRequest:request success:success failure:failure];
/* 3. Start the operation! */
[[AFHTTPRequestOperationManager sharedManager].operationQueue addOperation:operation];
相同限制在这里。如果我找到解决方案,我会告诉你。从我看到的情况来看,requestSerializer是每个管理员分配的。 – Fervus
@Fervus让我知道我的答案是否适合你。 –