2

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

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

一切正常,但有些请求要求我将参数直接编码在其 URL 中,而不是默认的 JSON 格式。我想过requestSerializer在 custom 上设置属性AFHTTPRequestOperation,但是这个类没有这样的属性。

TL;DR:有没有办法为每个 HTTP 请求设置 requestSerializer 属性?

4

1 回答 1

1

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];
于 2014-01-31T23:17:19.963 回答