Serialization AFJSONSerializer与HTTPSerializer

Serialization AFJSONSerializer与HTTPSerializer,serialization,afnetworking,Serialization,Afnetworking,我使用的是AFNetworking 2.0,有一个AFHTTPRequestOperationManager子类HTTPClient,它处理我应用程序中的所有HTTP流量 我已经将HTTPClient的requestSerializer属性设置为[AFJSONRequestSerializer],它应该用JSON编码参数并将它们放在请求体中 这一切都正常,但有些请求要求我将参数直接编码到它们的URL中,而不是默认的JSON格式。 我考虑过在自定义的AFHTTPRequestOperation上设

我使用的是AFNetworking 2.0,有一个
AFHTTPRequestOperationManager
子类
HTTPClient
,它处理我应用程序中的所有HTTP流量

我已经将
HTTPClient
requestSerializer
属性设置为
[AFJSONRequestSerializer]
,它应该用JSON编码参数并将它们放在请求体中

这一切都正常,但有些请求要求我将参数直接编码到它们的URL中,而不是默认的JSON格式。 我考虑过在自定义的
AFHTTPRequestOperation
上设置
requestSerializer
属性,但是这个类没有这样的属性


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

AFHTTPRequestOperation
没有
requestSerializer
请求。我认为这种混乱是因为你对对象创建顺序的思考不正确

如果使用manager,会发生以下情况:

  • 管理器有一个请求序列化程序
  • 请求序列化程序用于创建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告诉我我的答案是否适合您。