NSURLConnection didReceiveData не вызывается

Я прочитал множество сообщений, снова и снова говорящих об одном и том же: когда вы используете NSURLConnection, методы делегатаnot called, Я понимаю, что документы Apple являются неполными, и ссылочные устаревшие методы - это позор, но, похоже, я не могу найти решение.

Код для запроса есть:

// Create request
NSURL *urlObj = [NSURL URLWithString:url];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlObj cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30];
[request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];

if (![NSURLConnection canHandleRequest:request]) {
    NSLog(@"Can't handle request...");
    return;
}

// Start connection
dispatch_async(dispatch_get_main_queue(), ^{
    self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES]; // Edited
});

... и код для методов делегата здесь:

- (void) connection:(NSURLConnection *)_connection didReceiveResponse:(NSURLResponse *)response {
    NSLog(@"Receiving response: %@, status %d", [(NSHTTPURLResponse*)response allHeaderFields], [(NSHTTPURLResponse*) response statusCode]);
    self.data = [NSMutableData data];
}

- (void) connection:(NSURLConnection *)_connection didFailWithError:(NSError *)error {
    NSLog(@"Connection failed: %@", error);
    [self _finish];
}

- (void) connection:(NSURLConnection *)_connection didReceiveData:(NSData *)_data {
    [data appendData:_data];
}

- (void)connectionDidFinishDownloading:(NSURLConnection *)_connection destinationURL:(NSURL *) destinationURL {
    NSLog(@"Connection done!");
    [self _finish];
}

Здесь не так много проверок на ошибки, но я удостоверился в нескольких вещах:

Whatever happens, didReceiveData is never called, so I don't get any data ...but the data is transfered (I checked using tcpdump) ...and the other methods are called successfully. If I use the NSURLConnectionDownloadDelegate instead of NSURLConnectionDataDelegate, everything works but I can't get a hold on the downloaded file (this is a known bug) The request is not deallocated before completion by bad memory management Nothing changes if I use a standard HTML page somewhere on the internet as my URL The request is kicked off from the main queue

Я не хочу использовать стороннюю библиотеку, так как, в конечном счете, эти запросы должны быть включены в мою собственную библиотеку, и я хотел бы минимизировать зависимости. Если мне нужно, я буду использоватьCFNetwork напрямую, но это будет огромной болью в том, что вы знаете, что.

Если у вас есть идея, это очень поможет. Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос