title: Dealing with unexpected response content types with AFNetworking / AFHTTPRequestOperation
body: <p>I'm using AFNetworking to process HTTP requests in my iOS app.  I have run into a stumbling block.  I cannot be certain of what the response content type will be, but you have to set the response serializer BEFORE the request is processed.  This means I could do an API request, expecting an image back, but actually there's some authentication error, so the server returns a JSON-formatted response instead.</p>
  
  <p>Here's my code:</p>
  
  <pre><code>AFHTTPRequestOperation* op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
  [op setResponseSerializer:[AFJSONResponseSerializer serializer]]; // ??????
  [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
   {
       NSDictionary* result = (NSDictionary*) responseObject;
       onSuccess((NSArray*) result);
   } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
       onFailure(error);
   }];
  [op start];
  </code></pre>
  
  <p>As you can see, I've had to set the expected content type implicitly by setting the responseSerializer to [AFJSONResponseSerializer serializer].  So if I get something else back, it causes an error, even though I may still wish to parse an process that response when dealing with the error.</p>
  
  <p>So my question is, should I just use the standard AFHTTPResponseSerializer, examine the response status code and then process the response body manually (as json, xml, html an image etc)?</p>