AFNetworking JSONSerializer与HTTPSerializer

时间:2013-11-04 13:18:39

标签: serialization afnetworking

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

我已将requestSerializer的{​​{1}}属性设置为HTTPClient,该属性应编码JSON中的参数并将其放入请求正文中。

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

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

1 个答案:

答案 0 :(得分:1)

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

如果您使用经理,会发生以下情况:

  1. 经理有一个请求序列化程序
  2. 请求序列化程序用于创建NSMutableURLRequest
  3. 经理创建AFHTTPRequestOperation并将此请求分配给它。
  4. 因此,如果您想使用不同的请求序列化程序发出请求,那很简单:

    /* 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];