Only check HTTP status code and content type if there isn't already an error passed in to the completion block. Otherwise network errors are overwritten by a faulty error stating the HTTP status code is 0.

This commit is contained in:
Adam Ernst 2011-08-24 15:41:32 -04:00
parent 450ff56e54
commit ea156ec3c2

View file

@ -64,14 +64,16 @@ static dispatch_queue_t json_request_operation_processing_queue() {
failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure
{ {
return [self operationWithRequest:urlRequest completion:^(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error) { return [self operationWithRequest:urlRequest completion:^(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error) {
BOOL statusCodeAcceptable = [acceptableStatusCodes containsIndex:[response statusCode]]; if (!error) {
BOOL contentTypeAcceptable = [acceptableContentTypes containsObject:[response MIMEType]]; BOOL statusCodeAcceptable = [acceptableStatusCodes containsIndex:[response statusCode]];
if (!statusCodeAcceptable || !contentTypeAcceptable) { BOOL contentTypeAcceptable = [acceptableContentTypes containsObject:[response MIMEType]];
NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; if (!statusCodeAcceptable || !contentTypeAcceptable) {
[userInfo setValue:[NSHTTPURLResponse localizedStringForStatusCode:[response statusCode]] forKey:NSLocalizedDescriptionKey]; NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
[userInfo setValue:[request URL] forKey:NSURLErrorFailingURLErrorKey]; [userInfo setValue:[NSHTTPURLResponse localizedStringForStatusCode:[response statusCode]] forKey:NSLocalizedDescriptionKey];
[userInfo setValue:[request URL] forKey:NSURLErrorFailingURLErrorKey];
error = [[[NSError alloc] initWithDomain:NSURLErrorDomain code:[response statusCode] userInfo:userInfo] autorelease];
error = [[[NSError alloc] initWithDomain:NSURLErrorDomain code:[response statusCode] userInfo:userInfo] autorelease];
}
} }
if (error) { if (error) {