AFNetworking JSONSerializer与HTTPSerializer

问题描述:

我正在使用AFNetworking 2.0,并有一个AFHTTPRequestOperationManager子类HTTPClient处理我的应用程序中的所有HTTP流量。AFNetworking JSONSerializer与HTTPSerializer

我已将HTTPClientrequestSerializer属性设置为[AFJSONRequestSerializer serializer],它应该将参数编码为JSON并将其放入请求正文中。

这就是所有的工作,但一些请求要求我的参数直接编码在他们的URL而不是默认的JSON格式。 我想过在自定义AFHTTPRequestOperation上设置requestSerializer属性,但该类没有此类属性。

TL; DR:有没有一种方法可以为每个HTTP请求设置requestSerializer属性?

+0

相同限制在这里。如果我找到解决方案,我会告诉你。从我看到的情况来看,requestSerializer是每个管理员分配的。 – Fervus

+0

@Fervus让我知道我的答案是否适合你。 –

AFHTTPRequestOperation没有requestSerializer请求。我认为这种混淆是因为你错误地考虑了对象创建的顺序。

这里的,如果你使用的经理会发生什么:

  1. 经理具有请求串行
  2. 请求串行器用于创建NSMutableURLRequest
  3. 经理创建一个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];