NSURLRequest / NSURLConnection ios 5.0 v / s более ранние версии - PullRequest
4 голосов
/ 02 сентября 2011

Я пытаюсь использовать NSMutableRequest и NSURLConnection для получения сжатого файла с сервера.Вот код, который я использую:

NSMutableURLRequest *newRequest = [NSMutableURLRequest requestWithURL:downloadUrl
                                                                  cachePolicy:NSURLRequestReloadIgnoringCacheData
                                                          timeoutInterval:30.0];


[newRequest setValue:@"Y29tLm5vbWFkZ......" forHTTPHeaderField:@"Authorization"];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:newRequest delegate:self];
if (!connection) {
        [self handleDownloadError];
}   

И я использую тот же метод NSURLConnectionDelegate

didReceiveResponse, didReceiveData, connectionDidFinishLoading, didFailWithError

Но я получаю разные ответы, когда я запускаю этот код в IOS 4.3 илиболее ранняя версия (загружает сжатый файл) и ios 5.0 (возвращает JSON с сообщением «Ошибка аутентификации»).

В ios 5.0 появилось много новых методов для NSURLConnectionDelegate.Но я не уверен, является ли это проблемой, касающейся измененного API для ios 5.0, или это код сервера, который обрабатывает один и тот же запрос по-разному.Кто-нибудь знает в чем может быть проблема?

1 Ответ

3 голосов
/ 26 октября 2011

iOS5 изменил способ ввода заголовков HTTP с заглавной буквы, а также убрал пробелы хотя бы от конца. Проверьте, какие именно HTTP-заголовки вы получаете, распечатав их в консоли:

- (void)connection:(NSURLConnection *)aConnection
  didReceiveResponse:(NSURLResponse *)aResponse
{
  NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)aResponse;
  NSLog(@"Response headers :%@", [httpResponse allHeaderFields]);
}

Кстати, вы заметили, что перечисленные вами методы помечены как " Доступно в iOS 2.0 через iOS 4.3 " в документации по библиотеке разработчика Apple iOS для NSURLConnection ?

...