2013-11-04 32 views
2

我正在使用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讓我知道我的答案是否適合你。 –

回答

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